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