Comprimir con tar en la terminal
A la hora de comprimir y descomprimir archivos y directorios completos de forma recursiva en Linux podemos usar diferentes programas: zip, gzip, p7zip, bzip2, xz y tar entre otros.
Todos pueden ser mejores o peores pero lo más importante es con cual te sientes más cómodo y, en este caso, vamos a usar el comando tar.
Si queremos empaquetar y comprimir un archivo usaremos la siguiente instrucción, con las siguientes opciones recomendadas:
tar -cvf archivo_comprimido.tar archivo_a_comprimir.txtSi es un directorio lo que queremos comprimir, con todo su contenido, en lugar de poner el nombre del archivo a comprimir ponemos la ruta del directorio.
tar -cvf directorio_comprimido.tar /ruta/al/directorioLas opciones que hemos usado son las siguientes:
- c-> Creamos un nuevo archivo
- v-> Muestra el progreso de cada archivo conforme lo va procesando
- f-> Damos un nombre al archivo comprimido
Mejorar la compresión con gzip
Una opción muy buena que tiene el comando tar es que nos permite mejorar el nivel de compresión usando el algoritmo gzip para lo cual solo tenemos que añadir la opción z a las opciones y en lugar de ponerle al archivo la extensión .tar le ponemos la extensión .tar.gz:
tar -cvzf directorio_comprimido.tar.gz /ruta/al/directorio- z-> Usa el algoritmo de compresión- gzip
Mejorar, aún más, la compresión con bzip2
Podemos mejorar, aún más, el nivel de compresión usando el algoritmo bzip2 en lugar de gzip.
El precio a pagar por este nivel de compresión es que la operación será más lenta para comprimir y descomprimir.
En esta caso cambiaremos la opción z por j y la extensión en este caso será .tar.tb2 (también puede ser .tar.tbz).
tar -cvjf directorio_comprimido.tar.gz /ruta/al/directorio- j-> Usa el algoritmo de compresión- bzip2
Ver el contenido del archivo comprimido
Podemos ver el contenido del archivo después de su compresión.
tar -tvf archivo_comprimido.tarLas opciones nos indican lo siguiente:
- t-> Lista el contenido del archivo comprimido
- v-> Muestra el progreso de cada archivo conforme lo va procesando
- f-> Damos un nombre al archivo comprimido
Si hemos usado uno de los algoritmos de compresión usaremos la misma instrucción escribiendo la extensión correspondiente.
Añadir uno o varios archivos (o un directorio) a un archivo comprimido
Si ya tenemos nuestro archivo comprimido y, por algún motivo, queremos añadirle al contenido otros archivos o incluso un directorio tendremos que usar la opción r, quedando la instrucción de la siguiente manera, pero hay que tener en cuenta que no es posible si hemos usado los algoritmos de compresión gzip o bzip2:
tar -rvf archivo_comprimido.tar archivo_a_incluir.txty si es un directorio:
tar -rvf archivo_comprimido.tar ruta/al/directorioDescomprimir un archivo tar
La operación contraria a lo realizado hasta ahora es descomprimir un archivo previamente comprimido con el comando tar.
tar -xvf archivo_comprimido.tarEn este caso usamos la nueva opción x, con la cual le indicamos que queremos extraer todo el contenido del archivo comprimido.
x-> Extraer el contenido del archivo
Extraer uno o varios archivos del archivo comprimido
Hay veces que el contenido de un archivo comprimido es de varios cientos, o quizás más, archivos y solo necesitamos extraer uno o varios, pero no todos los existentes.
En este caso usaremos la instrucción anterior pero añadiendo al final de la misma el nombre o nombres de los archivos que necesitamos extraer.
tar -xvf archivo_comprimido.tar archivo1.txt archivo2.txtImportante:
Si dentro del archivo comprimido existe una estructura de directorios y queremos extraer un archivo, tendremos que poner la ruta completa de donde se encuentra el archivo a extraer
tar -xvf archivo_comprimido.tar "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"Lo mismo hay que hacer si queremos extraer un directorio completo, es decir, hay que poner la ruta completa al directorio.
Si el archivo comprimido tiene alguno de los algoritmos de compresión gzip o bzip2 tendremos que usar la opción correspondiente para la extracción del o de los archivos:
# Para gzip
tar -zxvf archivo_comprimido.tar.gz "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"
# Para bzip2
tar -jxvf archivo_comprimido.tar.bz2 "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"Extraer archivos siguiendo un patrón determinado
Si queremos extraer todos los archivos .log que se encuentren en su interior usaremos la siguiente sintaxis.
tar -xvf archivo_comprimido.tar --wilcards '.log'Si se han usado alguno de los algoritmos de compresión anteriormente vistos actuaremos como hemos visto en las anteriores ocasiones.
 
								 
															 
								


