Dies sollte für Experten hier sehr einfach sein.
Ich habe ein Linux-Konto mit einem Benutzer-Festplattenkontingent von nur 6 GB. Es gibt einen /opt
Datenordner mit ca. 3 GB Daten, bei Komprimierung 1 GB. Es gibt einige symbolische Links innerhalb data-folder
. Normalerweise habe ich für die Erstellung einer Arbeitssicherung Folgendes ausgeführt.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Jetzt habe ich bereits 2,5 GB in meinem Benutzerfestplattenkontingent verbraucht. Ich habe gerade genug Speicherplatz, um Dateien nach Hause zu kopieren, aber nicht tar
wieder.
Gibt es eine Möglichkeit, den Ordner in einem einzigen Befehl zu tarieren und zu kopieren, beispielsweise mithilfe einer Pipe?
PS Ich kann nicht tarieren, /opt
da ich nur Lesezugriff auf habe /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.Antworten:
Sie möchten eine TAR-Datei erstellen, die sich nicht an dem Ort befindet, an dem sich die Dateien befinden, die Sie tar benötigen?
Es gibt viele Möglichkeiten, dies zu tun.
Wenn es lokal erstellt werden soll (= auf demselben Computer):
Sie können tar am Ende dieses Befehls zusätzliche Dateien oder Verzeichnisse hinzufügen.
Wenn es remote erstellt werden soll (dh Sie möchten die TAR-Datei auf einem Remote-Host aus demjenigen erstellen, der die zu tarierenden Daten enthält):
Die spätere Version ist sehr vielseitig. Zum Beispiel können Sie auch ein Verzeichnis + Unterverzeichnisse mit derselben Technik "duplizieren":
Duplizieren Sie ein Verzeichnis + Unterverzeichnisse in ein anderes lokales Verzeichnis:
Duplizieren Sie ein Verzeichnis + Unterverzeichnisse in ein anderes Remote-Verzeichnis:
Löschen Sie das 'v', wenn Sie es nicht benötigen, um Dateien anzuzeigen, da sie tariert (oder nicht geteert) sind: Es geht dann viel schneller, sagt aber nicht viel, es sei denn, es liegt ein Fehler vor.
Ich benutze ". / ..." für die Quelle, um tar zu zwingen, es als RELATIVEN Pfad zu speichern. In einigen Fällen möchten Sie zusätzliche Pfadinformationen hinzufügen:
Um beispielsweise die crontab-Dateien zu tarieren, einschließlich der in / etc, können Sie Folgendes tun:
Ich verwende absichtlich den relativen Pfad: Einige ALTE Versionen von tar können gefährlich sein und Dateien mit ihrem ursprünglichen GLOBAL-Pfad extrahieren, was bedeutet, dass Sie
cd /safedir ; tar xvf sometar
Folgendes tun können: und die Dateien mit globalen Namen überschreiben Dateien an ihrem ursprünglichen Pfad, der AUSSERHALB von / safedir liegt und nicht darunter! Sehr gefährlich und immer noch möglich, da es alte Produktionsserver gibt. Es ist besser, immer relative Pfade zu verwenden, selbst wenn Sie einen neueren Teer verwenden.quelle
-cvf
stattdessen verwendencvf
, bei anderen wird der-
Stil nicht erkannt . Und bedeutetez
früher "Komprimieren mit 'Komprimieren'", aber auf 'aktuellem' Teer bedeutet es "Komprimieren mit gzip". Sie können wissen, welche Komprimierung für eine Datei verwendet wird mit :file zefile
. Und benennen Sie es dann entsprechend um (wenn Ihr Teer verwendet wirdcompress
, sollte es besser in .tar.Z und nicht in .tar.gz umbenannt werden)Verwenden Sie die
-h
Option tar. Von der Manpage:so können Sie verwenden
tar -zcvfh data-folder.tar.gz /opt/data-folder
quelle
bsdtar
stattdessen versuchen , oderpax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
), die die Schleifen erkennen würdetar -rf <tarfilename> <filename>
, um sie zu einer vorhandenen tar-Datei hinzuzufügen.