объединять файлы без копирования их содержимого - PullRequest
7 голосов
/ 14 февраля 2010

(в C / C ++ / Linux)

Есть ли способ объединить файл A и файл B (или фактически добавить содержимое A к содержимому B) только путем изменения файловой системы без затрат на копирование данных? Файл A затем может быть удален.

Спасибо

Ответы [ 2 ]

7 голосов
/ 14 февраля 2010

Если файлы были блочно-структурированными, и если ОС поддерживала блочно-структурированные файлы (как это делают некоторые), то (в принципе) да. Но, как вы спрашиваете о Linux, я предполагаю, что вы говорите о файловой системе, ориентированной на байтовый поток, где дисковый блок может использоваться не полностью. В этом случае некоторое копирование неизбежно, и на практике вам необходимо скопировать весь файл.

2 голосов
/ 14 февраля 2010

Вы можете написать свою собственную файловую систему (например, с FUSE), которая предоставляет псевдо-файлы для дешевой конкатенации. Но я думаю, это было бы излишним (для любого случая использования), так как вам нужно заботиться о ссылках и прочем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...