Em termos de identificar os 100 arquivos mais antigos, você pode fazer algo como:
ls -1tr /path/to/directory/cdr* | head -n100 > filelist.txt
O -1
listará um arquivo por linha (não estritamente necessário aqui), o -t
classificará por hora de modificação, o mais novo primeiro e o -r
reverterá a ordem de classificação (ou seja, fará a lista último mais recente). O pipe com saída para head -n100
listará as primeiras 100 linhas (isto é, os 100 arquivos mais antigos). Em seguida, redireciono a saída disso para filelist.txt
- esse arquivo contém os nomes dos 100 arquivos mais antigos.
Você pode então compactar esses arquivos com:
zip backup -@ < filelist.txt
Isso criará um arquivo chamado backup.zip
com o conteúdo dos arquivos no filelist.txt
. A opção -@
instrui zip
a ler os nomes dos arquivos a partir da entrada padrão, e o redirecionamento fornece essa lista a partir do arquivo.
Uma vez que você tenha testado muito e veja se ele faz o que você quer, você pode remover os arquivos em filelist.txt
:
xargs rm < filelist.txt
Isso vai deixar você com:
-
filelist.txt
da lista dos arquivos mais antigos -
backup.zip
do conteúdo dos arquivos mais antigos
Observe que isso não afeta seu limite de tamanho de arquivo de 500 MB. Uma abordagem seria examinar o tamanho do arquivo zip depois de criá-lo e, se for muito grande, diminuir o número de arquivos incluídos no arquivo.