web-dev-qa-db-fra.com

Désarchiver un fichier dans un répertoire spécifique

En exécutant la commande, le fichier se trouve dans /home/user/Documents/home/user/Documents/.

tar -xzvf /tmp/file.tar.gz -C /home/user/Documents/
2
OrigamiEye

Cela se produit parce que vous avez utilisé des chemins absolus lors de la création de l'archive et que vous utilisez -C pour exécuter chdir(2) avant la désarchivage, vous obtiendrez les chemins absolus à partir de l'endroit où vous avez chdir(2)-.

Maintenant, vous avez deux options si vous voulez utiliser -C:

  • Utilisez des chemins relatifs lors de la création de l'archive, puis vous pourrez utiliser -C comme vous l'avez utilisé lors de la désarchivage:

    tar -xzvf /tmp/file.tar.gz -C /home/user/Documents/
    

    choisissez la destination avec soin pour vous assurer qu'elle n'a pas la possibilité de remplacer tout ce qui existe.

  • Remplacez le répertoire par / et utilisez les chemins absolus lors de l'archivage. Choisissez bien sûr le chemin chdir(2) dans ce cas car il pourrait remplacer tout fichier existant:

     tar -xzvf /tmp/file.tar.gz -C /
    

    sur la base de votre exemple, cela mettra le (s) fichier (s) dans /home/user/Documents/.

3
heemayl