Uso de cpio: Unix en el recuerdo

Aunque hoy en día el estándar para empaquetar archivos es tar, en los primeros días de Unix el uso de cpio era el preferido. La razón detrás de esto era la portabilidad de este último por encima del primero, aunque esta situación se revirtió a fines de la década de 1980. A partir de ahí, tar se convirtió en la herramienta más utilizada para empaquetar archivos. Sin embargo, saber utilizar cpio puede resultar todavía útil si tenemos que lidiar con archivos provenientes de diferentes tipos de sistemas.

Uso de cpio

Las siguientes son las opciones más utilizadas de cpio:

  • Crear un nuevo archivo: -o (output)
  • Extraer desde un archivo: -i (input)
  • Copiar una estructura de directorios: -p (copypass)
  • Reiniciar el tiempo de acceso de los archivos una vez copiados: -a
  • Preservar tiempos de modificación (usado con -i): -m
  • Crear directorios en caso de que hiciesen falta (usado con -o y -i): -d
  • Especificar un archivo que contiene un patrón (usado con -i): -e
  • Listar el contenido de un archivo (usado con -i): -t
  • Indicar el formato del archivo resultante: -F. La lista disponible de formatos está disponible aquí.

Una característica propia a tener en cuenta cuando utilicemos cpio es que debemos indicarle la lista de archivos a empaquetar de manera específica. Podemos hacerlo con un comodín (*) o enviándole la salida de find o ls mediante una tubería.

Ejemplos

A continuación, ilustraremos alguno de los casos anteriores mediante ejemplos. En la Fig. 1 podemos ver el resultado de los mismos.

# Empaquetar los archivos de log del servidor web Apache
find /var/log/apache2/ | cpio -o > /tmp/apache2.cpio
# Empaquetar el directorio de configuracón de Apache
find /etc/apache2/ | cpio -o > /tmp/apache2.cpio
# Ver el contenido de un archivo empaquetado
cpio -tv < /tmp/apache2.cpio
# Desempaquetar un archivo y restaurar sus contenidos a su ubicación original. Si se desea sobreescribir archivos existentes, utilizar la opción -u también.
cpio -vid < /tmp/apache2conf.cpio
# Desempaquetar y restaurar en el directorio actual
cpio -ivd --no-absolute-filenames < /tmp/apache2conf.cpio

Alternativamente, se pueden combinar las operaciones de copia y de restauración en un mismo paso de la siguiente forma (usando la opción -p):

find /var/log/apache2/ | cpio -pvd .
Ejemplos del uso de cpio
Figura 1 – Ejemplos del uso de cpio

Espero que este post les haya resultado de utilidad. Para mayor información, pueden consultar el manual de cpio en el sitio web del proyecto GNU.

¡Nos leemos en breve!