Packen Sie die Datei mit tar.gz aus dem Stammverzeichnis

8

Ich versuche, eine CSV-Datei mit tar.gz zu packen, während ich mich im Stammverzeichnis befinde.

Die Datei myfile.csvbefindet sich unter /mnt/sdb1/ So lautet der vollständige Dateiname/mnt/sdb1/myfile.csv

Ich versuche das tar.gz unter zu speichern /mnt/sdb1/old_files

Ich habe es so versucht:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

Aber wenn ich die Datei extrahiere, wird ein Ordner mit dem Namen "mnt" extrahiert, der einen anderen Ordner namens "sdb1" enthält, der die Datei enthält.

Ist es möglich, nur die Datei zu komprimieren, anstatt alle Verzeichnisse zu kopieren?

Schwarz
quelle

Antworten:

12

Verwenden Sie die --directoryOption von man tar:

-C, - -Verzeichnis DIR

Wechseln Sie in das Verzeichnis DIR

dh:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Fiximan
quelle
Vielen Dank, dass Sie Fiximan! Dies löste das Problem. Ich werde upvoten, sobald ich 15 Ruf habe.
Schwarz
3

Sie müssen zuerst cd /mnt/sdb1den tarBefehl starten .

Zu Ihrer Information, Sie müssen hier nicht verwenden tar, da der Zweck darin besteht, mehrere Dateien in einem Tarball zu agglomerieren. Da Sie hier nur eine Datei haben, verwenden Sie einfach gzip.

DR_
quelle
Ich weiß, aber ich muss es aus dem Stammverzeichnis tun, weil ich den Befehl von einem Skript aus ausführen.
Schwarz
1
Mann, also füge einfach den cdBefehl vorher hinzu tar, dann kannst du zurückgehen oder verwenden, cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /wenn du eine Zeile cmd bevorzugst.
McSinyx
@ McSinyx Das Problem ist, dass das Verzeichnis nicht gespeichert wird, auch wenn ich es ausführe, cd /mnt/sdb1/dann bin ich bei der nächsten Ausführung eines Befehls wieder im Stammverzeichnis. Aber deine zweite Lösung erscheint mir logisch, ich versuche es.
Schwarz
@ McSinyx NICE! Es funktioniert :) Danke, das wird sehr nützlich sein!
Schwarz
@EdwardBlack Sie können ein Skript von überall aus ausführen, indem Sie einfach die relevanten absoluten Pfade hinzufügen. Im Allgemeinen ist die Verwendung relativer Pfade eine schlechte Idee, da sie leicht zu Problemen führen kann.
dr_
1

Verwenden Sie die -COption zum Teer:

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
Jeff Schaller
quelle