encontrar e rsync?

24

Quero poder pesquisar arquivos com mais de 14 dias e 10k e depois rsync esses arquivos encontrados em um destino.

Existe uma maneira de combinar esses dois comandos?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest
mkrouse
fonte

Respostas:

33

Você pode enviar a saída do find para o rsync usando uma das opções descritas abaixo.

Método 1

Essas 2 opções são muito semelhantes, ambas assumem que você está alterando os diretórios para algum local e executando o findcomando a partir daí.

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

Você também pode usar um tubo para alimentar a lista em:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

Método # 2

Este método pode ser executado de qualquer lugar.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Nome do arquivo com o nome do argumento da linha de comando sob o qual foi encontrado removido. Dessa forma, você pode usar qualquer diretório src, sem precisar fazer o cd no diretório src primeiro.

Referências

slm
fonte