Comment extraire un seul dossier dune grande archive tar.gz?

Jutilise cette commande sur un 5 Go archive

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 …

Commentaires

  • Avez-vous utilisé un chemin absolu ou relatif? Devrait être relatif, à part ça, ça a lair juste. Combien de temps lavez-vous laissé fonctionner et quelle est la qualité de votre système? Cela prendra au moins plusieurs minutes sur une machine rapide. Potentiellement une heure ou plus? Je ' exécute un test maintenant.
  • Oui, il sest terminé après ~ 1 h, mais le chemin absolu était faux, vous aviez raison.
  • Sous Linux, vous pouvez voir jusquoù larchive tar se trouve avec cat /proc/$(pidof tar)/fdinfo/0 (adaptez la commande si vous en avez plus dun tar processus en cours dexécution).
  • La partie importante nest pas non plus la barre oblique finale. Lutilisation de folder/folder2/ a gagné ' t fonctionner.

Réponse

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 dextraire un dossier particulier, jetez un œil à ce quil contient le fichier tar:

tar -tvf foo.tar 

Et notez le nom exact du fichier. Dans le cas de mon fichier foo.tar, 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é nest pas (forcément) la bonne façon de le faire. Vous devez laisser de côté la barre oblique principale. Si vous souhaitez simuler des chemins absolus, commencez par cd / et assurez-vous que vous « êtes le superutilisateur. De même, procédez de la même manière:

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

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

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

Commentaires

  • --strip-components=N peut être utile à certains ici.
  • dans mon cas, il était nécessaire décrire ./foldername/ au lieu de , je suppose que cétait parce que lorsque jai créé le tar, je lai créé avec tar -cvf santi.tar ./* et quand je " répertorié " le tar cest ce quil a dit drwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
  • Et à propos de .gz?
  • @PeterKrauss remplace -xvf par -xzvf (en ajoutant -z) et évidemment foo.tar à foo.tar.gz ou quel que soit le nom de votre archive. Il en va de même pour -j (bz2) et pour certaines versions récentes, -J (xz). Sinon, un pipeline comme zcat foo.tar.gz | tar -xvf - … fonctionne également.
  • Et rappelez-vous, si vous êtes fatigué de toute la sortie verbeuse lors de lextraction, ignorez simplement le v dans tous les exemples. Par exemple, tar -tf foo.tar et tar -xf foo.tar ....

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *