Como Bichoy indicou, você pode usar o comando find
para encontrar arquivos com um tempo específico de acesso, criação e modificação. No entanto -mtime leva um deslocamento em incrementos de 24 horas e nem sempre é conveniente calcular a menos que você queira algo de uma quantidade específica de números de 'dias' atrás. Você precisará combinar isso com -daystart
para 'arredondar' para o começo do dia.
Eu acho mais conveniente no seu caso, é a opção -newermt que leva um datestringring (e não o nome de um arquivo de referência como a maioria das versões new-newer)
Combine isso com a opção find
-print0
para manipular arquivos com espaços no nome e, opcionalmente, -type f
para não obter diretórios no período em que você está interessado:
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
Há um grande problema com isso: no caso de o número de arquivos encontrados se tornar muito longo, xargs
invocará seu comando (neste caso tar
) várias vezes, pois xargs
precisa ajustar os argumentos no linha de comando que não é infinita.
Para contornar que eu sempre uso cpio
, que lê nomes de arquivos de stdin. Com o parâmetro --format=ustar
para obter um arquivo tar POSIX, e no seu caso você precisaria enviar a saída através de gzip
para obter o resultado desejado:
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