Pack du fichier avec tar.gz à partir du répertoire racine

8

J'essaie d'emballer un fichier .csv avec tar.gz, tout en étant dans le répertoire racine.

Le fichier myfile.csvest situé à /mnt/sdb1/ Donc le nom de fichier complet est/mnt/sdb1/myfile.csv

J'essaie de sauvegarder le tar.gz sous /mnt/sdb1/old_files

Je l'ai essayé comme ça:

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

Mais lorsque j'extraye le fichier, un dossier avec le nom "mnt" sera extrait qui contient un autre dossier appelé "sdb1", qui contient le fichier.

Est-il possible de compresser le fichier uniquement, au lieu de copier tous les répertoires?

Noir
la source

Réponses:

12

utilisez l' --directoryoption de man tar:

-C, - -directory DIR

passer au répertoire DIR

c'est à dire:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Fiximan
la source
Merci Fiximan! Cela a résolu le problème. Je voterai dès que j'aurai 15 points de réputation.
Black
3

Vous devez d'abord cd /mnt/sdb1, puis lancez la tarcommande.

Pour info, vous n'avez pas besoin d'utiliser tarici car son but est d'agglomérer plusieurs fichiers dans une archive tar. Puisque vous n'avez qu'un seul fichier ici, utilisez-le gzip.

dr_
la source
Je sais, mais je dois le faire à partir du répertoire racine, car j'exécute la commande à partir d'un script.
Black
1
Man, alors ajoutez simplement la cdcommande avant tar, alors vous pouvez revenir en arrière, ou utiliser cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /si vous préférez une ligne cmd.
McSinyx
@McSinyx Le problème est que le répertoire n'est pas enregistré, même lorsque j'exécute, cd /mnt/sdb1/je serai à nouveau dans le répertoire racine lors de la prochaine exécution d'une commande. Mais votre deuxième solution me semble logique, je l'essaie.
Black
@McSinyx NICE! Ça marche :) Merci, ce sera TRÈS utile!
Black
@EdwardBlack Vous pouvez exécuter un script de n'importe où, ajoutez simplement les chemins absolus pertinents. En général, l'utilisation de chemins relatifs est une mauvaise idée car elle peut casser les choses facilement.
dr_
1

Utilisez l' -Coption pour tarer:

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