Tenho certeza de que algumas pessoas podem melhorar bastante isso, mas isso pode ajudar você.
Os comandos necessários provavelmente são encontrados para verificação e determinação da lista de arquivos para backup e, em seguida, tar, cpio ou zip para arquivamento, dependendo de suas preferências.
Modificarei sua especificação um pouco para varrer os diretórios, mas não os arquivos individuais.
Vamos supor que o /etc/backupdirlist.txt contenha uma lista de diretórios para verificar e / media / backup é o ponto de montagem da mídia de backup (já montado) e / media / backup / backups é um diretório já existente no qual você deseja colocar os backups e filelists.
O requisito de sete dias não é difícil de cumprir se você usar o dia da semana como o nome do arquivo de destino no processo de backup e escrever sobre os antigos.
Você precisa de algo assim
(nota: não testado, pode ter erros, desculpas se fizer algo estúpido, é aplicável a Licença GNU LGPL e o termo de responsabilidade padrão)
Eu sugiro passar por cima deste comando de cada vez e examinar as variáveis com echo $ VAR ou os arquivos com menos para ver o que ele faz. Leia também as man pages para find e cpio.
#!/bin/bash
DIRLIST=/etc/backupdirlist.txt
DAYOFWEEK='date +%a'
FILELISTDEST=/media/backup/backups/$DAYOFWEEK.filelist
BACKUPDEST=/media/backup/backups/$DAYOFWEEK.backup.tgz
TIMELIMIT=-1 # says save everything modified less than or equal to one day ago
echo >$FILELISTDEST # to erase last weeks list
for DIR in 'cat $DIRLIST'
do find $DIR -mtime $TIMELIMIT >>$FILELISTDEST # >> appends the lists
done
cat $FILELISTDEST | cpio --create --format=ustar | gzip -9 -c >$BACKUPDEST
Eu não expliquei como colocar este script no cron, vou deixar isso para você ou outro participante. Certifique-se de que ele funciona e faça o que você deseja como um script, antes de automatizá-lo.
Nas diferentes caixas unix, pode haver variações nas versões do fabricante dos utilitários padrão, como find ou cpio. A melhor maneira de contornar isso é instalar as versões GNU em todas as plataformas. O Linux já tem as versões GNU.
Espero que isso ajude!