Como tar-gz todos os arquivos com mais de 28 dias em um diretório?

4

Todos os dias estou excluindo arquivos de log em uma pasta.

find ~/folder -mtime +28 -type f -delete

Agora eu gostaria de arquivar e compactar todos os arquivos afetados pelo comando delete acima e armazenar este tar.gz em uma nova pasta de diretório2.

Então, vamos supor isso:

~/folder:
  - x1 (3 days old)
  - x2 (3 days old)
  - y1 (29 days old)
  - y2 (29 days old)

~/folder2:
  - genericname1.tar.gz: (some already present archive)
    - ...

arquivar, compactar e excluir

~/folder:
  - x1
  - x2

~/folder2:
  - genericname1.tar.gz:
    - ...
  - genericname2.tar.gz:
    - y1
    - y2
    
por Raffael 16.01.2017 / 16:38

1 resposta

6

Você pode executar um script como este (assumindo o GNU tar ou libarchive bsdtar ) :

find . -type f -mtime +28 -print0 | tar -czvf backup.tar.gz --null -T -

Ou comece a usar o logrotate (recomendado). Você coloca seu arquivo de configuração personalizado em /etc/logrotate.d/yourfile , arquivo de exemplo:

/var/log/news/news.crit {
    monthly
    rotate 2
    olddir /var/log/news/old
    missingok
    postrotate
    kill -HUP ‘cat /var/run/inn.pid‘
    endscript
    nocompress
}

Você pode ver mais informações sobre todas as opções de configuração do logrotate aqui

    
por 16.01.2017 / 16:50

Tags