cpio (Copy In/Out) es una utilidad que permite copiar archivos a
o desde un contenedor cpio, que no es más que un fichero que almacena
otros archivos e información sobre ellos (permisos, nombres,
propietario...). Este contenedor puede ser un disco, otro archivo, una
cinta o incluso una tubería, mientras que los ficheros a copiar pueden
ser archivos normales, pero también dispositivos o sistemas de ficheros
completos.
En la tabla 7.5 se muestran las opciones de cpio más
utilizadas; la sintaxis de esta orden es bastante más confusa que la de tar debido a la interpretación de lo que cpio entiende por `dentro' y `fuera': copiar `fuera' es generar un contenedor en
salida estándar (que con toda probabilidad desearemos redireccionar),
mientras que copiar `dentro' es lo contrario, es decir, extraer archivos
de la entrada estándar (también es seguro que deberemos redireccionarla).
Tabla 7.5:
Opciones de la orden cpio.
Opción |
Acción realizada |
o |
Copiar `fuera' (out) |
i |
Copiar `dentro' (in) |
m |
Conserva fecha y hora de los ficheros |
t |
Crea tabla de contenidos |
A |
Añade ficheros a un contenedor existente |
v |
Modo verbose |
|
Por ejemplo, si deseamos copiar los archivos de /export/home/ en el
fichero contenedor
/tmp/backup.cpio
podemos utilizar la siguiente sintaxis:
anita:~# find /export/home/ |cpio -o > /tmp/backup.cpio
Como podemos ver, cpio lee la entrada estándar esperando los nombres
de ficheros a guardar, por lo que es conveniente utilizarlo tras una
tubería pasándole esos nombres de archivo. Además, hemos de redirigir
su salida al nombre que queramos asignarle al contenedor, ya que de lo
contrario se mostraría el resultado en salida estándar (lo que
evidentemente no es muy utilizado para realizar backups). Podemos fijarnos
también en que estamos usando la orden `find' en lugar de un simple
`ls': esto es debido a que `ls' mostraría sólo el nombre de
cada fichero (por ejemplo, `passwd') en lugar de su ruta completa (`/etc/passwd'), por lo que cpio buscaría dichos ficheros a partir
del directorio actual.
Una vez creado el fichero contenedor quizás resulte interesante chequear su
contenido, con la opción `t'. Por ejemplo, la siguiente orden mostrará
en pantalla el contenido de /tmp/backup.cpio:
anita:~# cpio -t < /tmp/backup.cpio
Igual que para almacenar ficheros en un contenedor hemos de pasarle a cpio
la ruta de los mismos, para extraerlos hemos de hacer lo mismo; si no indicamos
lo contrario, cpio -i extraerá todos los archivos de un contenedor, pero
si sólo nos interesan algunos de ellos podemos especificar su nombre de la
siguiente forma:
anita:~# echo "/export/home/toni/hola.tex" |cpio -i </tmp/backup.cpio
Para conocer más profundamente el funcionamiento de cpio, así
como opciones propias de cada implementación, es indispensable consultar la
página del manual de esta orden en cada clon de Unix donde vayamos a
utilizarla.
© 2002 Antonio Villalón Huerta