Deseja usar o find com o rsync no script

0

Estou tentando fazer um script que será executado no cron, que pesquisará um caminho para um nome de arquivo específico. No caminho, pode haver mais pastas com o mesmo nome de arquivo. Se encontrado e eles são mais recentes que 2 dias, rsync a pasta pai e todo o conteúdo. Esta parte funciona, mas apenas sincroniza "filename.txt" que é mais recente que 2 dias e nada mais:

#!/bin/sh
find /path/ -name "filename.txt" -type f -mmin -$((60*48)) -exec rsync --ignore-exsiting -az --log-file=/path/ {} /source /destination \;
    
por brema 02.07.2015 / 13:59

1 resposta

1

Estou assumindo por pasta pai que você quer dizer apenas a pasta com o nome do arquivo.txt.

Você pode encontrar para imprimir o nome desta pasta com -printf '%h\n' em vez de o -exec. Você pode canalizar isso em um loop de shell ou xargs, por exemplo:

find /path/ -name "filename.txt" -type f -mtime -2 -printf '%h\n' |
  xargs -i rsync ... {} /destination \;

Eu acho que você precisa adicionar -R ao seu rsync, senão todo o os diretórios serão sobrepostos no destino.

    
por 02.07.2015 / 20:05