tar -cjf site1.tar.bz2 -C /var/www/site1 .
Dans l'exemple ci-dessus, tar passera au répertoire /var/www/site1 avant de faire son truc car l'option -C /var/www/site1 a été donné.
À partir de man tar :
OTHER OPTIONS
-C, --directory DIR
change to directory DIR
L'option -C œuvres; juste pour clarifier, je posterai 2 exemples :
-
création d'une archive sans le chemin complet :chemin complet
/home/testuser/workspace/project/application.waret ce que nous voulons, c'est justeproject/application.wardonc :tar -cvf output_filename.tar -C /home/testuser/workspace projectRemarque :il y a un espace entre
workspaceetproject; tar remplacera le chemin complet par justeproject. -
extraction de l'archive avec modification du chemin cible (par défaut,
., c'est-à-dire le répertoire courant)tar -xvf output_filename.tar -C /home/deploy/tarextraira l'archive en fonction du chemin donné et en préservant le chemin de création ; dans notre exemple le fichierapplication.warsera extrait à/home/deploy/project/application.war./home/deploy:donné sur extrait
project:donné à la création de l'archive tar
Note :si vous souhaitez placer l'archive créée dans un répertoire cible, il vous suffit d'ajouter le chemin cible avant le nom de l'archive. ex :
tar -cvf /path/to/place/output_filename.tar -C /home/testuser/workspace project
Semble -C l'option jusqu'à tar v2.8.3 ne fonctionne pas de manière cohérente sur toutes les plates-formes (OS). -C L'option est censée ajouter un répertoire à l'archive, mais sur Mac et Ubuntu, elle ajoute un préfixe de chemin absolu dans le fichier tar.gz généré.
tar target_path/file.tar.gz -C source_path/source_dir
Par conséquent, la solution cohérente et robuste consiste à cd dans source_path (répertoire parent de source_dir) et exécutez
tar target_path/file.tar.gz source_dir
ou
tar -cf target_path/file.tar.gz source_dir
dans votre scénario. Cela supprimera le préfixe de chemin absolu dans la structure de répertoires de votre fichier tar.gz généré.