Восстановить файл из фрагментов без копирования и перемещения данных

Восстановить файл из фрагментов без копирования и перемещения данных

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

cat file1 file2 file3 > joined-file

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

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

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

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

решение1

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

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

Связанный контент