miércoles, 17 de julio de 2013

Empaquetar y comprimir archivos

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Todo usuario de Windows conoce alguna de esas pequeñas aplicaciones existentes para comprimir y descomprimir ficheros que nos hacen más sencilla la tarea de enviar emails excesivamente pesados o archivar material sin que ocupe un tamaño desorbitado. En GNU/Linux tenemos los equivalentes de turno y de eso es lo que vamos ha hablar en esta entrada, pero solo de los más populares en Debian y derivados.

tar
Sería el comando parejo de los clásicos WinZip o WinRar de Windows, pero para ejecutar en la terminal de nuestro Linux. Aunque también puede comprimir se usa más como empaquetador, es decir, con él podemos empaquetar una serie de archivos y directorios en un solo fichero con extensión .tar respetando la misma estructura de origen al desempaquetar.
  • tar -cf archivo o archivos : crea (c) y nombra (f) fichero con los archivos designados.
  • tar -tf archivo :  para ver el contenido de un archivo .tar.
Veamos un ejemplo:

paco@debian:~/ pruebas$ ls
01    01.backup    01.ln    01.lnk    02    otros
paco@debian:~$ tar -cf pack.tar *
paco@debian:~/ pruebas$ tar -tf pack.tar
01
01.backup
01.ln
01.lnk
02
otros/

paco@debian:~/ pruebas$

Hemos hecho lo siguiente: primero hemos listado el contenido del directorio pruebas que es donde estamos posicionados, obteniendo como resultado cinco archivos (01, 01.backup, 01.ln, 01.lnk y 02) y un directorio (otros). Luego hemos empaquetado dicho contenido con el comando tar empleando las opciones de creación (-c) y denominación (-f) de archivo o fichero, a las que sigue el nombre del archivo a crear (pack.tar) y un asterisco que representa la totalidad del contenido del directorio pruebas (dentro de poco hablaremos de los caracteres comodín, similares a los de Windows). Después hemos listado el contenido del archivo de nueva creación pack.tar empleando las opciones -tf del comando tar para asegurarnos que están todos los archivos.
  • tar -rf archivo.tar archivo o archivos : para añadir los archivos designados al archivo .tar.
  • tar -xvf archivo.tar : para desempaquetar un archivo .tar (eXtrae, Visualiza la extracción mientras se produce y nombra el Fichero). Solo hay que mover el archivo al directorio donde queramos desempaquetarlos y al hacerlo la estructura de directorios, si la hubiere, se mantendría.
  • tar -xvwf archivo.tar : igual que la anterior pero añadiendo la opción -w (What) que da a elegir qué archivos se extraen y cuales no.
  • tar -c archivos | bzip > fichero.tar.bz2 : lo que hace es empaquetar los archivos en formato tar.bz2 y enviarlos mediante una tubería al comando bzip2 para que los comprima. Hablaremos de las tuberías en otra entrada más adelante.
gzip
Compresor de archivos que genera fichero en formato .gz.
  • gzip -9 archivo : para comprimir con el mayor factor de compresión posible (de 1 a 9).
  • gzip archivo.gz fichero o ficheros : para comprimir los ficheros designados en archivo con extensión .gz.
  • gzip -d : para descomprimir archivos .gz.
bzip
Compresor de archivos que trabaja con el formato .bz2.
  • bzip archivo.bz2 fichero o ficheros : para comprimir los ficheros designados en archivo con extensión .bz2.
  • bzip -d archivo : para descomprimir archivos .bz2.
zip
El clásico formato de Windows en GNU/Linux.
  • zip archivo.zip fichero o ficheros : para comprimir los ficheros designados en un fichero .zip.
  • unzip archivo.zip : para descomprimir un archivo .zip.
rar
Ídem al anterior.
  • rar archivo.rar fichero o ficheros : para comprimir los ficheros designados en un fichero .rar.
  • unrar archivo.rar : para descomprimir un archivo .rar.
Termino diciendo que si no se tuviera alguna de estas utilidades instalada solo había que teclear sudo apt-get install seguido del nombre del programa deseado para instalarlo al momento.