.png)
Ich habe ein Problem mit einem Tarball, das auf einer SuSe 10.3 Server-Version erstellt wurde.
Die TAR-Datei hat eine Größe von 6,5 GB, aber wenn ich sie unter Ubuntu 9.10 entpacke, hat der resultierende Ordner nur eine Größe von 1,5 GB.
verwendete Befehle: tar cvf
zum Packen, tar xvf
zum Auspacken.
Vielleicht weiß jemand, wie das behoben werden kann, wäre toll.
Prost.
Antwort1
Wenn Sie Symlinks oder Hardlinks im Verzeichnis haben, fügt Tar möglicherweise jeden davon als separate Datei hinzu. Wenn Sie es dann auf einem Linux-Dateisystem dekomprimieren, werden die Links wiederhergestellt und alles nimmt weniger Platz ein.
Tar dient nicht zur Komprimierung, sondern nur zum Erstellen einer Datei mit mehreren Dateien. Aus diesem Grund wird es normalerweise über gzip oder bzip weitergeleitet.
Antwort2
Mit cpio erzielen Sie möglicherweise bessere Ergebnisse. Es ist für größere Backups viel besser geeignet und kann per Skript so konfiguriert werden, dass es symbolische Links und spezielle Dateien korrekt verarbeitet.
Antwort3
Wenn Sie viele kleine Dateien haben, kann es in Tar zu Blockierungen und Verzeichnis-Overhead kommen. Wichtig ist, wie groß das Quellverzeichnis war. Tar hat möglicherweise leeren Speicherplatz in Dateien komprimiert, indem es ihnen keine Blöcke zugewiesen hat. Versuchen Sie die --apparent-size
Option zum du
.
Sie können versuchen, die Liste der von generierten Dateien tar -tf
mit den extrahierten Dateien zu vergleichen. Extrahieren Sie mit, tar -xf
um zu sehen, ob beim Extrahieren Fehler auftreten. Versuchen Sie, eine Kopie des Tar-Archivs neu zu erstellen, um zu sehen, wie groß es ist.
Antwort4
Ich würde vorschlagen, es zu versuchenPersonen. Zumindest wird es in CentOS so genannt. Soweit ich mich erinnere, kann es mit beschädigten TAR-Dateien umgehen, indem es die ungültigen TAR-Mitglieder überspringt. Ansonsten empfehle ich Ihnen, mit dem zu experimentieren.Tar-DateiModul der Python-Standardbibliothek und mache das programmgesteuert. So etwas habe ich vor ein paar Jahren schon einmal gemacht.