3 votes

Ligne de commande Linux - rechercher un fichier dans une archive tar

Je voudrais vérifier si un fichier se trouve dans une archive tar gzip'ed. Par exemple je veux vérifier si le fichier /etc/passwd est présent dans l'archive backup_2010-09-27.tar.gz

Une solution idiote peut être :

tar -tzf backup_2010-09-27.tar.gz | grep '/etc/passwd'

Mais cela prend du temps. Y a-t-il une meilleure solution ?

6voto

jason saldo Points 5036

Essayez ceci (omettez la barre oblique initiale) :

tar -tzf backup_2010-09-27.tar.gz etc/passwd

1voto

Jin Yong Points 7101

C'est le processus de gunzipping qui prend du temps et il n'y a aucun moyen d'atteindre les membres de l'archive tar avant le gunzipping. Je ne sais pas s'il sera utile de spécifier explicitement un décalage de membre lors de l'énumération du tar, mais si le processus de recherche de membre est plus rapide que l'énumération complète, alors.. :

tar -K etc/passwd -tzf backup_2010-09-27.tar.gz| head -1

J'en doute.

vous pouvez également essayer d'extraire le fichier et de vérifier le code de retour afin de ne pas avoir à lister entièrement l'archive et à faire des recherches après coup.

echo etc/passwd | tar -T - -K etc/passwd -Oxzf backup_2010-09-27.tar.gz >/dev/null

$ ? devrait être zéro

quand même, les armes à feu ....

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X