cpio basic extract command, équivalent de «tar xzvf»?

12

J'ai reçu une distribution de logiciels Unix sous forme de fichier cpio compressé. Quelle est la meilleure commande pour extraire les fichiers?

Mark Harrison
la source
Quand avez- man cpiovous vu ce que vous avez vu?
5
Je vois: -i -o -p -t -B -c -C -f -F -H -M -n -v -V -W -b -r -s -S -E -A -O -l - 0 -a -I -L -R -d -m -u -? --extract --create - pass-through --list --block-size = --io-size = --force-local --nonmatching --file = --format = --message = --numeric- uid-gid --quiet --rsh-command = --verbose --dot --warning = --swap --rename --swap-bytes --swap-halfwords --to-stdout --pattern-file = - -only-verify-crc --append --link --absolute-filenames --no-absolu-filenames --null --reset-access-time --dereference --owner = --make-répertoires --preserve- modification-time --no-preserve-owner --sparse --unconditional
Mark Harrison

Réponses:

11
gzip -cd foo.cpio.gz | cpio -idmv
  • i: extraire (entrée)
  • d: créer des répertoires
  • m: conserver mtime
  • v: verbeux
Mark Harrison
la source
3
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames

Bien que ce soit une vieille question, elle apparaît très haut sur Google, donc j'ai pensé que je pourrais la mettre à jour. Je suis d'accord avec la réponse acceptée en général, mais vous devez ajouter "--no-absolute-filenames" sauf si vous avez l'intention d'écraser des fichiers système importants sur votre machine. Personnellement, je préfère "zcat" à "gzip -cd" ou "gunzip -c".

Enfin, notez que vous devez exécuter cpio en tant que root (par exemple sudo) si vous extrayez un système de fichiers racine qui contient des nœuds de périphérique.

Mat
la source
0

Par exemple, pour extraire le contenu archivé de / etc / httpd / dans le répertoire courant, en créant des sous-répertoires ./etc/httpd/

mkdir restored-etc-httpd
cd restored-etc-httpd    
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"

La réponse acceptée et celle de Matt m'ont toutes deux été utiles, mais j'ai été perplexe pendant un certain temps en raison de trois détails:

  1. Le modèle correspondant doit être cité pour fonctionner comme un modèle: P
  2. L'option --no-absolute-filenamesdoit précéder le motif sur la ligne de commande
  3. Étant donné que cette option supprime le début /des noms de fichiers, le modèle de correspondance doit également omettre le premier/
Chris D'Amato
la source