Comprimir ficheros selectivamente

Publicado en: Tecnología

En la consola de comandos podemos comprimir un directorio completo con todo lo que contenga, o una selección de directorios. O excluir en una búsqueda ciertos directorios y que no los comprima.

Y podemos comprimir solo ciertos ficheros, con una nombre conocido, como el tipo de extensión, y guardando la estrucutura de directorios, comprimirlos y guardarlos. En un backup por ejemplo, que ejecutemos cada cierto tiempo.

Uniendo una búsqueda de ficheros y la compresión de ficheros que encontremos podemos crear un comprimido de cada fichero encontrado.

Para comprimir todos los XML en cualquier directorio de la ruta dada (/ruta/directorio/origen/), hacemos:

find /ruta/directorio/origen/ -type f -name *.xml | xargs -d "\n" /usr/bin/tar -czf /ruta/backup/xmlfiles.tar.gz

Al hacer la búsqueda nos devuelve un array, separado por retornos de carro, en la forma del caracter «\n». Lo que hacemos es dividir el array y añadir cada path a la compresión.

Podemos crear un script sencillo, para añadir una fecha al fichero tar.gz que creamos al comprimir, y guardar versionado por fecha.

#! /bin/bash
export path_origen="/ruta/directorio/origen"
export path_destino="/ruta/directorio/destino"
fecha=$(date +"%y_%m_%d_%H")
/usr/bin/find ${path_origen} -type f -name *.xml | xargs -d "\n" /usr/bin/tar -czf ${path_destino}xmlfiles${fecha}.tar.gz

Saludos