Como Bichoy indicou, você pode usar o find
comando para encontrar arquivos com um tempo específico de acesso, criação e modificação. No entanto, -mtime assume 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
'arredondar' para o início do dia.
Eu acho mais conveniente no seu caso, é a opção -newermt que utiliza uma cadeia de dados (e não o nome de um arquivo de referência como a maioria das versões do -XNew)
Combine isso com find
a -print0
opção de manipular arquivos com espaços no nome e, opcionalmente, -type f
não obter nenhum diretório no período em que você estiver 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: caso o número de arquivos encontrados se torne muito longo, xargs
invocará seu comando (nesse caso tar
) várias vezes, conforme xargs
necessário para ajustar os argumentos na linha de comando que não são infinitos. Para contornar o que eu sempre uso cpio
, que lê nomes de arquivos de stdin. Com o --format=ustar
parâmetro para obter um arquivo tar POSIX, e no seu caso, você precisará canalizar a saída 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