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.war
et ce que nous voulons, c'est justeproject/application.war
donc :tar -cvf output_filename.tar -C /home/testuser/workspace project
Remarque :il y a un espace entre
workspace
etproject
; 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/
tar
extraira l'archive en fonction du chemin donné et en préservant le chemin de création ; dans notre exemple le fichierapplication.war
sera 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é.