GNU/Linux >> Tutoriels Linux >  >> Linux

Tarez un répertoire, mais ne stockez pas les chemins absolus complets dans l'archive

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 :

  1. création d'une archive sans le chemin complet :chemin complet /home/testuser/workspace/project/application.war et ce que nous voulons, c'est juste project/application.war donc :

    tar -cvf output_filename.tar  -C /home/testuser/workspace project
    

    Remarque :il y a un espace entre workspace et project; tar remplacera le chemin complet par juste project .

  2. 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 fichier application.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é.


Linux
  1. Core dumpé, mais le fichier core n'est pas dans le répertoire courant ?

  2. Comment exclure les chemins absolus pour tar ?

  3. Trouver les fichiers existant dans un répertoire mais pas dans l'autre

  4. Comment créer une archive zip compatible Linux d'un répertoire sur un Mac

  5. Comment copier une arborescence de répertoires mais pas les fichiers sous Linux ?

Chemin absolu ou relatif sous Linux :quelle est la différence ?

Commande Linux tar

Le didacticiel Ultimate Tar Command avec 10 exemples pratiques

Comment supprimer le chemin complet lors d'une compression tar.gz ?

Manière correcte d'utiliser l'option --remove-files avec TAR

Comment exclure des fichiers de l'archive TAR à l'aide d'expressions régulières ?