#4sysadmins

Inicio » GNU/Linux » Crear paquetes y copiar árbol de directorios: tar, cpio, dump y dd

Crear paquetes y copiar árbol de directorios: tar, cpio, dump y dd

Últimas Entradas

Follow #4sysadmins on WordPress.com

Empaquetar archivos

Para crear paquetes de archivos tipo .rar o .zip de Windows, o crear copias de seguridad, podemos usar las utilidades tar, cpio y dump. Otra utilidad interesante por ejemplo para copiar estructuras de discos completas o copias exactas es dd

El comando tar

La utilidad tar nos permite agrupar varios archivos en un único paquete (tarball), que además podemos comprimir usando opciones de compresión.

  • Agrupar todos los archivos terminados en .txt del directorio actual en un solo paquete (todos.tar) y posteriormente comprimirlo con la utilidad xz:
$ tar -cpvf todos.tar *.txt | xz -z > todos.tar.xz

Esto puede hacerse directamente con tar de la siguiente manera:

$ tar -cpvJf paquete.tar.xz *.txt
  • Empaquetar todos los archivos del directorio actual, menos los terminados en .txt (opción inversa a la anterior):
$ tar -cpvJf paquete.tar.xz ./* --exclude=*.txt
  • Desempaquetar un paquete comprimido con xz en otro directorio diferente al actual:
$ tar -xpvJf paquete.tar.xz -C /otro/directorio

Nota: Podemos usar la opción -z para comprimir con Gzip o -j para usar bzip2

Importante: Podemos aprender mas sobre las herramientas de compresión (gzip, bzip2 y xz) aquí o incluso si queremos extender el conocimiento con mas opciones útiles de este comando, existe una página “man” de este comando en este mismo blog.

cpio

En principio la utilidad cpio es similar a tar pero los detalles de su funcionamiento difieren en algunos aspectos. cpio fue inicialmente creado para el almacenamiento de copias de seguridad en cintas magnéticas. cpio se usa actualmente para copiar ficheros en o desde el árbol de directorio o archivo cpio, o bien copiar estructuras completas de directorios en unidades extraibles.

  • Copiar todos los directorios y ficheros que haya en el Escritorio en el archivo /tmp/miescritorio.cpio
$ find /home/user/desktop/ | cpio -o > /tmp/miescritorio.cpio

Si además queremos comprimirlo:

$ find /home/user/desktop/ | cpio -o | gzip /tmp/miescritorio.cpio.gz
  • Extraer todo el contenido del fichero creado anteriormente, en el directorio actual:
$cpio -i < /tmp/miescritorio.cpio

Si queremos solo extraer un determinado archivo:

$cpio -i solo-este-archivo < /tmp/miescritorio.cpio
  • Copiar un árbol de directorios a partir del directorio actual en otro directorio (/mnt/destino):
$find . -print | cpio -pvd /mnt/destino

dump

dump es diferente a las dos herramientas anteriores, debido a que lee el sistema de archivos directamente, y no a través del sistema de archivos. Esto tiene algunas ventajas como por ejemplo que no afecta a las marcas temporales de los archivos o que en caso de tener que copiar todo el sistema de archivos la lectura será mas efectiva a que se realizan muchos menos movimientos de los cabezales del disco. Como desventaja nos encontramos que es específico para la familia de sistemas de archivos extendidos.

La herramienta dump está en desuso. Para recuperar archivos de una copia de seguridad realizada con dump se usa el comando restore.

Sobre el comando dd:

La utilidad dd puede ser un buen modo de crear copias exactas de particiones completas, hacer una copia exacta de un disco extraible, copiar un disco para el que Linux carece de controladores del sistema de archivos, crear varias instalaciones idénticas de Linux en varios ordenadores o crear un archivo vacío de un tamaño particular que pueda manipular posteriormente dándole formato con mkfs.

  • Clonar disco duro sda en sdb:
$ sudo dd if=/dev/sda of=/dev/sdb bs=1M
  • Podemos clonar solo los sectores legibles:
$ sudo dd if=/dev/sda of=/dev/sdb bs=1M conv=noerror,sync
  • Copiar un disco completo a la primera partición del disco sdb
$ sudo dd if=/dev/sda of=/dev/sdb1 bs=1M
  • Crear una imágen de un disco duro o CD
$ sudo dd if=/dev/sda of=/home/syu/sda.[bin|iso]
$ sudo dd if=/dev/cdrom of /home/syu/myCDRROM.iso
  • Rellenar un disco o partición con 0, es decir elimina su contenido:
$ sudo dd if=/dev/zero of=/dev/sda[X]
  • Para borrar solo el primer sector:
$ sudo dd if=/dev/zero of=/dev/sda count=1 bs=512
  • Para eliminar el cargador de arranque, pero no la tabla de particiones:
$ sudo dd if=/dev/zero of=/dev/hda count=1 bs=446
  • Respaldar el sector de arranque (MBR):
$ sudo dd if=/dev/sda of=/home/syu/Desktop/mbr.backup count=1 bs=512
$ sudo dd if=/home/syu/Desktop/mbr.backup of=/dev/sda
  • Crear un archivo de swap sin espacios vacíos:
$ dd if=/dev/zero of=/extra-swap bs=1024 count=1024

Información: Podemos aprender mas sobre los comandos tar, cpio y dd aquí

Nota: Estos comandos son requisito para aprobar la certificación “Linux Professional Institute 1 modelo 400“.  El material para esta certificación podemos encontrarlo en este mismo blog y en especial el tema en el que se estudian estos comandos además de los comandos para comprimir archivos (Gzip, bzip2 y xz), Capítulo 4 “Filesystem y la administración de archivos”

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: