Acho que eu faria isso usando find e depois passaria essa entrada para o tar. Usando seu exemplo, vamos supor que você queira arquivos entre 60 e 90 dias de idade.
find /home/public_html/images -type f -daystart -mtime -90 -and -mtime +60 -print0 | xargs -0 tar -Ajf images_60-90.tar.bz2
Isso listará todos os arquivos que foram modificados pela última vez há mais de 60 dias e há menos de 90 dias e os colocará no tarball chamado images_60-90.tar.bz2
. Meu uso de -print0
e xargs
é principalmente para proteger-se de arquivos com espaços nos nomes, e no caso de haver tantos arquivos que eles ultrapassam o comprimento máximo da linha de comando (que pode ser encontrado executando o comando% código%). Eu não testei esse comando, e não sei o que acontece se você usar a opção append quando o arquivo não existir, então você pode ter que fazer mais ajustes.
Se, no entanto, você souber que não há espaços em nenhum nome de arquivo, e haverá menos arquivos que o valor de ARG_MAX, você pode simplesmente usar um pouco seu comando.
find /home/public_html/images -type f -daystart -mtime -90 -and -mtime +60 tar -cjf images_60-90.tar.bz2