Encontre todos os arquivos que foram alterados nos últimos 30 dias e coloque-os em um TAR

3

Portanto, temos um servidor de armazenamento temporário sem o Git ou qualquer outra ferramenta de versão.

Agora queremos enviar as alterações para o sistema ao vivo.

Eu estava pensando em find , usando -exec .

Estou tentando isso: find . -type f -mtime -30 -exec tar -czf changed.tar.gz {} \;

Mas apenas adiciona o último arquivo. Eu quero adicionar a changed.tar.gz em vez de sobrescrevê-lo completamente. Como posso fazer isso?

    
por Max 15.03.2017 / 11:59

1 resposta

2

Em vez de usar exec :

find . -type f -mtime -30  -exec tar -czf changed.tar.gz {} \;

Você pode pipe a tar usando --files-from=- e --null :

find . -mtime -30 -type f -print0  | tar czf changed.tar.gz --files-from=- --null
  

- null

       -T reads null-terminated names, disable -C
     

-T,
  --files-from FILE

       get names to extract or create from FILE

No exemplo acima, o nome do arquivo de entrada é - - a entrada do pipe

Você também pode pipe usando xargs

find . -type f -mtime -30 -print | xargs tar -czf changed.tar.gz
    
por Yaron 15.03.2017 / 12:05

Tags