web-dev-qa-db-fra.com

Comment extraire un dossier unique d'une grande archive tar.gz?

J'utilise cette commande sur une archive 5 Go

tar -zxvf archive.tar.gz /folder/in/archive

est-ce la bonne façon de procéder? Cela semble prendre une éternité sans sortie de ligne de commande ...

145
Garrett Hall

tar stocke les chemins relatifs par défaut . GNU tar le dit même si vous essayez de stocker un chemin absolu:

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names

Si vous avez besoin d'extraire un dossier particulier, regardez ce qu'il y a dans le fichier tar:

tar -tvf foo.tar

Et notez le nom de fichier exact. Dans le cas de mon foo.tar fichier, je pourrais extraire /home/foo/bar en disant:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

Donc non, la façon dont vous avez posté n'est pas (nécessairement) la bonne façon de le faire. Vous devez omettre la barre oblique principale. Si vous souhaitez simuler des chemins absolus, faites cd / d'abord et assurez-vous que vous êtes le superutilisateur. En outre, cela fait la même chose:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

Il existe de très bonnes raisons évidentes pour lesquelles tar convertit les chemins en chemins relatifs. L'une est la possibilité de restaurer une archive dans des endroits autres que sa source d'origine. L'autre est la sécurité. Vous pouvez extraire une archive, vous attendre à ce que ses fichiers apparaissent dans votre répertoire de travail actuel, et remplacer à la place les fichiers système (ou votre propre travail) ailleurs par erreur.

Remarque: si vous utilisez le -P option, tarwill archive les chemins absolus. Il est donc toujours avantageux de vérifier le contenu des grandes archives avant de les extraire.

160
Alexios