2010-02-14 24 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),爲廉價串聯提供僞文件。但我想這會過度(對於任何用例),因爲你必須關心引用和東西。