Stellen Sie Dateien aus Fragmenten wieder her, ohne Daten zu kopieren oder zu verschieben

Stellen Sie Dateien aus Fragmenten wieder her, ohne Daten zu kopieren oder zu verschieben

Auf Unix-Systemen können Dateien mit dem Dienstprogramm zusammengefügt werden cat(Windows-Systeme habentypeodercopy /B).

cat file1 file2 file3 > joined-file

Dabei wird der Inhalt der alten Dateien in eine einzelne neue Datei kopiert. Der Vorgang benötigt die erforderliche Zeit, um die alten Dateien zu lesen und die neue Datei zu schreiben. Die neue Datei wird getrennt von den alten Dateien gespeichert. Der Befehl schlägt daher fehl, wenn nicht genügend freier Speicherplatz zum Schreiben der neuen Datei vorhanden ist.

Gibt es eine schnellere Möglichkeit, die Dateien zu kombinieren oder zumindest Programme zu „überlisten“, sodass sie denken, die Dateien seien kombiniert, ohne dass Daten auf der Festplatte verschoben oder kopiert werden müssen?

Eine Möglichkeit hierzu könnte darin bestehen, das Inhaltsverzeichnis des Dateisystems so zu ändern, dass die Dateien behandelt werden alsFragmenteeiner größeren Datei. Gibt es eine „sichere“ Möglichkeit, dies zu tun (also sicherer als dddas Inhaltsverzeichnis manuell zu ändern)?

Ich bin an jeder Methode zum Zusammenführen der Dateien auf jeder Plattform interessiert, die schneller ist und weniger Speicherplatz benötigt als das physische Verketten der Dateien.

Antwort1

Ich habe angenommen, dass dies mit einer Art Overlay-Dateisystem über einem vorhandenen möglich sein könnte (die Änderung eines vorhandenen Dateisystems führt garantiert zur Katastrophe). Dann habe ich herausgefunden, dass man mit FUSE (Filesystem in Userspace) wahrscheinlich etwas für Linux schreiben könnte.

Aus einer Laune heraus habe ich gegoogelt und herausgefunden, dass jemand dies bereits implementiert hat - es gibt ein GIT-Projekt namens concat-fuse -https://github.com/concat-fuse/concat-fuse/blob/master/README.md– das anscheinend das tut, was Sie beschreiben.

verwandte Informationen