Auf Unix-Systemen können Dateien mit dem Dienstprogramm zusammengefügt werden cat
(Windows-Systeme habentype
odercopy /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 dd
das 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.