В системах Unix файлы можно объединять с помощью catутилиты (в системах Windows есть typeилиcopy /B ).
cat file1 file2 file3 > joined-file
Это берет содержимое старых файлов и копирует его в один новый файл. Процесс занимает время, необходимое для чтения старых файлов и записи новых. Новый файл сохраняется отдельно от старых файлов, поэтому команда не будет выполнена, если на диске не осталось свободного места для записи нового файла.
Есть ли более быстрый способ объединить файлы или, по крайней мере, «обмануть» программы, заставив их думать, что файлы объединяются, что не требует перемещения или копирования данных на диск?
Одним из способов сделать это может быть изменение оглавления файловой системы, чтобы файлы обрабатывались как фрагменты файла большего размера. Есть ли «безопасный» способ сделать это (то есть безопаснее, чем использовать ddдля изменения оглавления вручную)?
Меня интересует любой способ объединения файлов на любой платформе, который быстрее и требует меньше места на диске, чем физическая конкатенация файлов.
dmsetupинструмент предназначен для работы с блочными устройствами и / или обычными файлами, которые являются изображениями блочных устройств, поэтому он использует общие блоки 512 B. Возможно, можно было бы разветвить проект и изменить источник, чтобы разрешить разрешение 1 B, I не знаю
nbd, я не мог заставить это работать так легко. Изучите concatfs и / или concat-fuse (об этом уже есть в ответе Давидго ниже). Я не проверял их, так что это просто комментарий.