В системах Unix файлы можно объединять с помощью утилиты cat (в системах Windows есть type или copy /B).

cat file1 file2 file3 > joined-file

Это берет содержимое старых файлов и копирует его в один новый файл. Процесс занимает время, необходимое для чтения старых файлов и записи новых. Новый файл сохраняется отдельно от старых файлов, поэтому команда не будет выполнена, если на диске не осталось свободного места для записи нового файла.

Есть ли более быстрый способ объединить файлы или, по крайней мере, "обмануть" программы, заставив их думать, что файлы объединены, что не включает перемещение или копирование данных на диске?

Одним из способов сделать это может быть изменение оглавления файловой системы, чтобы файлы обрабатывались как фрагменты файла большего размера. Есть ли "безопасный" способ сделать это (т.е. безопаснее, чем использовать dd для изменения оглавления вручную)?

Меня интересует любой способ объединения файлов на любой платформе, который быстрее и требует меньше места на диске, чем физическая конкатенация файлов.

1 ответ1

0

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

На всякий случай я погуглил и обнаружил, что кто-то уже реализовал это - есть проект GIT под названием concat-fuse - https://github.com/concat-fuse/concat-fuse/blob/master/README.md - который выглядит делать то, что вы описываете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .