Recibí una distribución de software Unix como un archivo cpio comprimido. ¿Cuál es el mejor comando para extraer los archivos?
Respuesta1
gzip -cd foo.cpio.gz | cpio -idmv
- i: extraer (entrada)
- d: crear directorios
- m: preservar mtime
- v: detallado
Respuesta2
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
Si bien esta es una pregunta antigua, aparece en los primeros lugares de Google, así que pensé en actualizarla. Estoy de acuerdo con la respuesta aceptada en general, pero debe agregar "--no-absolute-filenames" a menos que tenga la intención de sobrescribir archivos importantes del sistema en su máquina. Además, personalmente, prefiero "zcat" a "gzip -cd" o "gunzip -c".
Finalmente, tenga en cuenta que necesita ejecutar cpio como root (por ejemplo, sudo) si está extrayendo un sistema de archivos raíz que contiene nodos de dispositivo.
Respuesta3
Por ejemplo, para extraer el contenido archivado de /etc/httpd/ al directorio actual, creando subdirectorios ./etc/httpd/
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
La respuesta aceptada y la de Matt fueron útiles para mí, pero me quedé perplejo por un tiempo debido a tres detalles:
- El patrón coincidente debe citarse para que funcione como patrón :P
- La opción
--no-absolute-filenames
debeprecederel patrón en la línea de comando - Dado que esa opción elimina el interlineado
/
de los nombres de archivos, el patrón coincidente también debe omitir el interlineado./
Respuesta4
Esta página de Wikipedia encpio
tiene algunas buenas notas.
Para obtener más detalles, consulte lacpio
manual.
Un enlace de la misma página de Wikipedia.analiza la comparación con tar
los archivos.
Y aquí hay un ejemplo deusando cpio
con el tar
formato.