cpio es una utilidad general de archivado de archivos y su formato de archivo asociado . Se instala principalmente en sistemas operativos tipo Unix . Esta utilidad de software fue concebida originalmente como un programa de archivado de cintas como parte de Programmer's Workbench ( PWB/UNIX ), y ha sido un componente de prácticamente todos los sistemas operativos Unix lanzados posteriormente. Su nombre deriva de la frase " copiar dentro y fuera" , que describe con precisión el uso que hace el programa de la entrada y salida estándar en su funcionamiento.
Todas las variantes de Unix también admiten otros programas de copia de seguridad y archivado, como tar , que se ha vuelto más conocido. [ 1 ] El uso de cpio por parte del gestor de paquetes RPM , en el initramfs del kernel de Linux desde la versión 2.6, y en el instalador de Apple ( pax ) hacen de cpio una importante herramienta de archivado.
Desde su diseño original, cpio y su formato de archivo comprimido han sufrido varias revisiones, a veces incompatibles. La más notable es el cambio, ahora una opción operativa, del uso de un formato binario para la metainformación de los archivos comprimidos a una representación basada en ASCII .
cpio fue eliminado de POSIX.1-2001 en favor de pax , [ 2 ] una utilidad similar que se había introducido en la versión anterior del estándar.
Historia
cpio apareció en la versión 7 de Unix como parte del proyecto Programmer's Workbench . [ 3 ]
Formato de operación y archivo
cpio fue diseñado originalmente para almacenar archivos de respaldo en una cinta magnética de forma secuencial y contigua. No comprime ningún contenido, pero los archivos resultantes suelen comprimirse con gzip u otros compresores externos.
Creación de archivos
Al crear archivos durante la operación de copia , iniciada con la opción de línea de comandos -o , cpio lee las rutas de archivos y directorios desde su canal de entrada estándar y escribe el flujo de bytes resultante en su salida estándar. Por lo tanto, cpio se suele utilizar con otras utilidades que generan la lista de archivos que se van a archivar, como el programa find .
El archivo cpio resultante es una secuencia de archivos y directorios concatenados en un único archivo, separados por secciones de encabezado con metadatos del archivo, como nombre de archivo, número de inodo, propietario, permisos y marcas de tiempo. Por convención, el nombre de archivo de un archivo comprimido suele tener la extensión de archivo cpio .
Este ejemplo utiliza la utilidad find para generar una lista de nombres de rutas que comienzan en el directorio actual para crear un archivo del árbol de directorios:
$ find . -depth -print | cpio -o > /path/archive.cpio Extracción
Durante la operación de copia , iniciada por el indicador de línea de comandos i , cpio lee un archivo comprimido desde su entrada estándar y recrea los archivos comprimidos en el sistema de archivos del sistema operativo.
$ cpio -i -vd < archive.cpio El indicador de línea de comandos d le indica a cpio que construya los directorios según sea necesario. El indicador v ( modo detallado ) muestra los nombres de los archivos a medida que se extraen.
Los argumentos de línea de comandos restantes, aparte de las opciones, son patrones de comodín similares a los de la shell ; solo se copian del archivo los archivos del archivo comprimido con nombres coincidentes. El siguiente ejemplo extrae el archivo /etc/fstab del archivo comprimido:
$ cpio -i -d /etc/fstab < archive.cpio Lista
Los archivos contenidos en un archivo cpio se pueden listar con esta invocación:
$ cpio -t < archive.cpio La lista puede ser útil ya que un archivo cpio puede contener rutas absolutas en lugar de relativas (por ejemplo, /bin/ls frente a bin/ls ).
Copiar
Cpio admite un tercer tipo de operación que copia archivos . Se inicia con la opción de paso directo ( p ). Este modo combina los pasos de copia de salida y copia de entrada sin crear realmente ningún archivo comprimido. En este modo, cpio lee las rutas de acceso desde la entrada estándar, al igual que en la operación de copia de salida , pero en lugar de crear un archivo comprimido, recrea los directorios y archivos en una ubicación diferente del sistema de archivos, según la ruta especificada como argumento de línea de comandos.
Este ejemplo copia el árbol de directorios comenzando en el directorio actual a otra ruta nueva en el sistema de archivos, conservando las horas de modificación de los archivos (bandera m ), creando directorios según sea necesario ( d ), reemplazando incondicionalmente cualquier archivo existente ( u ), mientras produce una lista de progreso en la salida estándar ( v ):
$ encontrar . -profundidad -imprimir | cpio -p -dumv nueva-ruta Estandarización POSIX
La utilidad cpio está estandarizada en POSIX .1-1988, pero se omitió en POSIX.1-2001 debido a su tamaño de archivo y otras limitaciones. Por ejemplo, la versión GNU ofrece varias opciones de formato de salida, como "bin" (predeterminado y obsoleto) y "ustar" (POSIX tar), con limitaciones de tamaño de archivo de 2.147.483.647 bytes (2 GB) y 8.589.934.591 bytes (8 GB), respectivamente. [ 4 ]
Los formatos de archivo cpio, ustar y pax están definidos por POSIX.1-2001 para la utilidad pax , que actualmente cumple con POSIX 1003.1-2008 , por lo que puede leer y escribir archivos con formato cpio y ustar.
Implementaciones
La mayoría de las distribuciones de Linux proporcionan la versión GNU de cpio. [ 5 ] FreeBSD y macOS utilizan la versión con licencia BSD bsdcpioproporcionada con libarchive . [ 6 ]
Véase también
Referencias
- ↑ Peek, J; O'Reilly, T; Loukides, M (1997). Unix Power Tools . O'Reilly & Associates, Inc. pág. 38.13. ISBN 1-565-92260-3.
- ↑ "Fundamento" . pubs.opengroup.org . Consultado el 18 de julio de 2024 .
- ↑ McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ↑ Documento de información de cpio , en el nodo Opciones , página del manual de bsdcpio
- ↑ "Cpio" . GNU.org.
- ↑ "libarchive" .
Enlaces externos
- cpio en The Single UNIX ® Specification, Versión 2, 1997, opengroup.org – indica que las aplicaciones deberían migrar a la utilidad pax
- C.4 Utilidades en las especificaciones base de The Open Group, edición 6, 2004, opengroup.org – indica que cpio fue eliminado
- – Octava edición de Unix de Bell Labs
- – manual de GNU
- – Manual de referencia de comandos de usuario de Solaris 11.4
- – Manual de comandos generales de FreeBSD
- – Manual de comandos generales de OpenBSD
- – Manual de comandos generales de Debian
- Software de 1977
- Archivadores Unix y utilidades relacionadas con la compresión
- Software de copia de seguridad gratuito
- Formatos de archivo
- Archivadores de archivos
- Software del Proyecto GNU