
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 cp
istleistungsstark genug, du kannst das:
cp -a --attributes-only olddir newdir
Wo newdir
gibt es (noch) nicht und --attributes-only
bedeutet
Kopiert nur die angegebenen Attribute der Quelldatei zum Ziel. […]
Dadurch werden keine Daten kopiert; normale Dateien in newdir
haben 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 -a
können Sie spezifischere Optionen verwenden, um nur die Attribute zu replizieren, die Sie wirklich benötigen.
Wie dem auch sei, nachdem Sie newdir
leere Dateien erstellt haben, verwenden Sie einfach tar
dieses Verzeichnis anstelle von olddir
.
Antwort2
star
unterstü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).
star
ist Teil der Schilytools.