
Hallo Leute, ich bin neu bei Linux.
Ich versuche, eine TAR-Datei aus einem anderen Verzeichnis zu erstellen und möchte sie in einem bestimmten Verzeichnis platzieren.
Ich habe dieses cmd ausprobiert
tar -cvf dailybackup.tar /root/filesfromlocalmachine/ -C /root/backup/
Es gibt einen Ordner mit dem Namen „pf Backup“ und ich möchte, dass das Tar dort erstellt wird. Aber jedes Mal, wenn ich dies ausführe, wird das Tar in dem Ordner erstellt, in dem ich den Befehl ausführe. Gibt es eine Möglichkeit, eine Tar-Datei aus einem anderen Ordner zu erstellen?
Antwort1
Ja, setze das Verzeichnis vor das "tar".
cd /
tar -cvf /where/to/put/it/dailybackup.tar root/backup/
und es wird ein Backup erstellt root/backup
.
Ich würde vorschlagen, Backups immer mit einem relativen Pfad zu erstellen (wie ich ihn in meiner Antwort verwendet habe). Andernfalls könnten Sie das Ziel überschreiben, wenn Sie es woanders wiederherstellen und dann einen Vergleich mit der Backup-Version durchführen möchten.
Antwort2
Wenn tar
eine -C
Option auftritt, ändert sich das aktuelle Arbeitsverzeichnis. Alle nachfolgenden Optionen sind davon betroffen. Diese Option ist reihenfolgeabhängig.
./a: ./b:
file001 file002
Wenn Sie beispielsweise mehrere -C
Optionen verwenden, ist die zweite Option -C
relativ zur ersten.
$ tar -vcf archive.tar.gz -C ./a . -C ../b .
./
./file001
./
./file002
Denn -C
der Eintrag [DATEI...] passt nicht an,Pfaderweiterung(... Globbing) funktioniert nicht. In Fällen, in denen Globbing erforderlich ist, --transform
kann es jedoch verwendet werden.
$ tar -cvf archive.tar.gz \
--show-transformed-names --transform='s:^./.*/::' ./[ab]/file00?
file001
file002
'--strip-components=<n>'
kann außerdem verwendet werden, um bei der Extraktion führende Komponenten zu entfernen.
$ tar -vxf archive.tar.gz \
--show-transformed-names --strip-components=2
file001
file002