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
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éé avectar -cvf santi.tar ./*
et quand je " répertorié " le tar cest ce quil a ditdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Et à propos de
.gz
? - @PeterKrauss remplace
-xvf
par-xzvf
(en ajoutant-z
) et évidemmentfoo.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 commezcat 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
ettar -xf foo.tar ...
.
tar
se trouve aveccat /proc/$(pidof tar)/fdinfo/0
(adaptez la commande si vous en avez plus duntar
processus en cours dexécution).folder/folder2/
a gagné ' t fonctionner.