2010-02-14 22 views
7

(在C/C++/Linux)的连接文件而不复制其内容

有没有办法只有通过改变文件系统来连接文件A和文件B(或实际追加一个A的含量是B的)没有数据复制的开销?文件A然后可以被丢弃。

感谢

+0

所以,如果你有2个文件的每个1字节,你最终有1个文件包含2个字节?这将是面向块存储的一个问题 - 大多数现代商业非易失性存储都是面向块的,缺少NOR闪存。但是,与SD卡一样,任何SATA或USB连接都是如此。 – MSalters 2010-02-15 12:46:44

回答

7

如果文件是块结构,如果OS支持的块结构的文件(如一些做),那么(原则)是的。但是,当您询问Linux时,我假设您正在讨论一种面向字节流的文件系统,其中可能无法完全使用磁盘块。在这种情况下,一些复制是不可避免的,实际上你必须复制整个文件。

2

您可以编写自己的文件系统(例如使用FUSE),为廉价串联提供伪文件。但我想这会过度(对于任何用例),因为你必须关心引用和东西。