92 votes

Comment tarifier un répertoire sans conserver la structure du répertoire ?

Je travaille sur une sauvegarde script et je veux tar up un répertoire de fichiers :

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

Cela le déchire, mais lorsque je dé-tarifie le fichier résultant, il inclut la structure complète du fichier : les fichiers sont dans le répertoire suivant home/username/drupal/sites/default/files .

Existe-t-il un moyen d'exclure les répertoires parents, de sorte que le tar résultant ne connaisse que le dernier répertoire ( files ) ?

175voto

Utilisez l'option --directory :

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files

2 votes

Et si je veux mettre 2 répertoires ici ?

0 votes

@user3352668 ajoutez simplement deux répertoires. Par exemple, si la configuration par défaut contient "files" et "morefiles", ajoutez simplement "morefiles" à la chaîne de caractères de nbt. Btw : La meilleure solution est celle de nbt, qui devrait être la réponse acceptée.

5 votes

-C DIR est identique à --directory=DIR change le répertoire en DIR

56voto

MaikoID Points 164

Bonjour j'ai une meilleure solution quand on entre dans le répertoire spécifié c'est impossible (Makefiles,etc)

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

N'oubliez pas le point (.) à la fin ! !!

1 votes

-C DIR est identique à --directory=DIR change le répertoire en DIR

5 votes

A quoi sert le point à la fin ?

3 votes

@BruceSun Le -C change votre répertoire de travail. Le point indique à tar le répertoire que vous voulez archiver (c'est-à-dire le répertoire de travail actuel).

41voto

John Gibb Points 4473
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

21 votes

Vous pouvez également utiliser l'option -C de tar.

10 votes

Cd n'est pas recommandé et est source d'erreurs, par exemple pour les gros scripts ou les makefiles. La réponse ci-dessous est plus généralement utilisable et correcte.

0 votes

Essais -C y --directory n'a pas fonctionné pour moi sur Ubuntu 16.04. C'est la seule option qui fonctionne.

5voto

Deepesh Rajpal Points 31

Créer une archive tar

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

Décomposer des fichiers sur une machine locale

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

Télécharger sur un serveur

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

Déclarer sur le serveur

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

2voto

sangram Points 46

Pour gunzip tous les fichiers txt (*.txt) de /home/myuser/workspace/zip_from/ à /home/myuser/workspace/zip_to/ sans structure de répertoire des fichiers sources, utilisez la commande suivante :

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X