Compression d'un dossier (tar) sans son répertoire contenant dans le nom du dossier

21

J'essaie de compresser un dossier avec la tarcommande.

Lorsque j'essaie de le compresser, cela fonctionne bien. Le problème vient du nom du fichier.

Chemin source:

/data/file/

Chemin de destination:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

J'exécute la commande à partir d'un dossier différent, et lors de l'extraction du dossier, j'obtiens tous les sous-répertoires au lieu du dossier de fichiers seul.

Seetha Raman
la source
1
La syntaxe tar est: tar zcvf file.tar.gz /path/dir/to/compressvous devriez peut - être modifier votre commande, tar zcvf $destinationpath $srcpathmais je ne sais pas exactement ce dont vous avez besoin. Pourriez-vous élaborer votre question avec un exemple de ce que vous attendez de la commande tar?
Lety
merci pour le commentaire, mon problème est comme suivant le commentaire que vous avez partagé ici "tar zcvf file.tar.gz / path / dir / to / compres" cela devrait fonctionner correctement si nous sommes dans le même répertoire "file" mon cas est nous travaillons à partir d'un répertoire différent, par exemple: / home / testuser1 / file: file est le dossier que je veux compresser et j'excute la commande depuis root pas dans home donc nous pouvons avoir besoin de donner le chemin complet vers le dossier, pendant l'extraction reçois tous les sous-répertoires de / home / testuser1 / fichier au lieu du dossier de fichiers
Seetha Raman
Probablement une faute de frappe, mais dans votre exemple, vous avez mélangé la source et la destination.
Jacob Vlijm

Réponses:

50

La façon la plus simple de le faire est de commencer par le cd dans le répertoire:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

Pour que le répertoire du dossier (contenant) devienne le répertoire racine de votre fichier compressé.

Un peu plus avancé utilise l'option -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

Cela crée un tar.gzfichier dans le répertoire courant (de travail), contenant tous les fichiers / dossiers à l'intérieur foldername_tocompress(attention au point, en disant que tous les fichiers / dossiers doivent être inclus).

Jacob Vlijm
la source
4
Le point à la fin de votre deuxième commande va inclure tous les fichiers du répertoire courant ...
David Duncan