Como Bichoy indicó, puede usar el find
comando para buscar archivos con un tiempo específico de acceso, creación y modificación. Sin embargo, -mtime toma un desplazamiento en incrementos de 24 horas y no siempre es conveniente calcularlo a menos que desee algo de una cantidad específica de números de 'días' atrás. Tendrá que combinar eso con -daystart
'redondear' eso al comienzo del día.
Creo que más conveniente en su caso, es la opción -newermt que toma una cadena de fecha (y no el nombre de un archivo de referencia como la mayoría de las versiones -newerXY)
Combine eso con find
la -print0
opción de manejar archivos con espacios en el nombre y, opcionalmente, -type f
no obtener ningún directorio en el período que le interese:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| xargs -0 tar -cvzf /tmp/saas_archive_logs.tar.gz
Hay un gran problema con eso: en caso de que el número de archivos encontrados sea demasiado largo, xargs
invocará su comando (en este caso tar
) varias veces según sea xargs
necesario para ajustar los argumentos en la línea de comando que no es infinito. Para eludir eso siempre uso cpio
, que lee los nombres de archivo de stdin. Con el --format=ustar
parámetro para obtener un archivo tar POSIX, y en su caso necesitaría canalizar la salida gzip
para obtener el resultado deseado:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| cpio --create --null --format=ustar \
| gzip > /tmp/saas_archive_logs.tar.gz