Qual é a melhor maneira de verificar se o arquivo foi alterado no Bash e manter 15 últimas cópias dele?

2

Qual seria a melhor maneira de escrever um script bash e executá-lo em cron (a cada hora) que:

  1. Verificaria se um arquivo em um diretório foi alterado
  2. Se alterado, faça uma cópia com o número da versão incremental e a data acrescentado ao nome do arquivo
  3. Mantenha as últimas 15 versões do arquivo no diretório e exclua a aqueles acima de 15

Eu meio que sinto que poderia fazer isso, mas este é importante para mim, então eu ficaria muito feliz em ter opiniões dos outros, já que eu não conheço muito bem os scripts de shell. Eu uso principalmente Debian e fedora.

    
por r0berts 23.12.2013 / 10:21

2 respostas

1

Considere usar o rsnapshot, que lhe dá a possibilidade de fazer a rotação de um sistema de arquivos (ou pastas) e manter um número arbitrário de versões.

O Rsnapshot faz o congelamento de todo o sistema de arquivos ou pastas, mas com um pouco de trabalho você pode excluir antigas versões consecutivas sem alterações.

O Rsnapshot usa rsync e possui vários parâmetros para ajuste. Obviamente, ele pode ser inserido em um crontab.

    
por 24.12.2013 / 01:17
0

Ele se chama newsyslog ou logrotate . Essa é a maneira mais fácil, evita que você edite explicitamente crontab e execute outros processos e lida com as armadilhas comuns (como verificar arquivos antigos, removê-los, renomear os outros, atomicidade, etc.). É comprovado e usado pelo resto do sistema, então você deve reutilizá-lo.

    
por 24.12.2013 / 00:50