Erstellen Sie eine Tar-Datei, die Dateinamen, aber keine Dateiinhalte speichert

Erstellen Sie eine Tar-Datei, die Dateinamen, aber keine Dateiinhalte speichert

Grundsätzlich möchte ich ein Tar-Image einer Ordnerstruktur erstellen, aber nicht den eigentlichen Dateiinhalt speichern. Wenn ich die Datei also entpacke, möchte ich die ursprünglichen Ordner, Dateinamen, Zeitstempel usw. erhalten, aber alle Dateien mit der Länge Null anstelle des ursprünglichen Dateiinhalts.

Die Absicht besteht hier darin, die Ordnerstruktur eines riesigen Ordners (Gigabyte groß) zu erfassen, ohne eine mehrere Gigabyte große TAR-Datei zu erstellen.

Dank im Voraus.

Antwort1

Wenn Ihr cpistleistungsstark genug, du kannst das:

cp -a --attributes-only olddir newdir

Wo newdirgibt es (noch) nicht und --attributes-onlybedeutet

Kopiert nur die angegebenen Attribute der Quelldatei zum Ziel. […]

Dadurch werden keine Daten kopiert; normale Dateien in newdirhaben die Größe Null. Beachten Sie, dass Sie Root sein müssen, um alle Attribute (z. B. Eigentumsrechte) zu replizieren. Möglicherweise benötigen Sie also sudo cp …. Stattdessen -akönnen Sie spezifischere Optionen verwenden, um nur die Attribute zu replizieren, die Sie wirklich benötigen.

Wie dem auch sei, nachdem Sie newdirleere Dateien erstellt haben, verwenden Sie einfach tardieses Verzeichnis anstelle von olddir.

Antwort2

starunterstützt dies seit 18 Jahren.... versuchen Sie:

star -c -dump -meta ... | star -tv

Dies listet alle Einträge als Dateien vom Typ „m“eta auf …

star -c -dump -meta ... | star -C todir -xmeta

extrahiert alle Dateien mit einer Größe von 0 Byte.

star -c -dump -meta ... | star -C todir -xmeta -force-hole

extrahiert alle Dateien als Dateien der Originalgröße ohne Daten (Sparse-Datei).

starist Teil der Schilytools.

verwandte Informationen