rsync remoto para arquivos locais apenas com mais de uma hora

0

Eu quero rsync de um remoto para arquivos locais que são mais antigos (ou mais recentes) do que um certo tempo.

Eu vi respostas que dizem find /src/path -mtime -1 | rsync ... , mas que só funcionam se o diretório for visto localmente. Como é remoto, não é visível.

Então, como posso executar o find no remoto e rsync seus resultados de volta ao local?

    
por Mike Dannyboy 22.06.2018 / 04:06

1 resposta

0

O rsync tem uma opção --list-only , que fornece um índice dos arquivos remotos, incluindo registros de data e hora:

$ rsync --list-only $REMOTE
drwx------            160 2018/09/04 12:55:12 .
-rw-r--r--          1,348 2018/09/04 12:52:33 .bash_profile
-rw-r--r--             55 2018/09/04 12:52:33 .bashrc
...

Filtrar nesta lista para selecionar apenas as datas apropriadas e, em seguida, alimentar isso no argumento --files-from de rsync subsequente (que pode se referir a stdin, usando --files-from=- ) deve fazer o trabalho.

Por exemplo, os seguintes arquivos rsync com um mtime entre 2018-08-01 e 2018-08-07 para a máquina local (com valores apropriados de $REMOTE e $LOCAL_PATH ; note $5 no awk comando refere-se à quinta coluna - ou seja, o nome do arquivo - da saída do rsync)

$ rsync --list-only $REMOTE | awk '/2018-08-0[1-7]/ {print $5}' | rsync --files-from=- $REMOTE $LOCAL_PATH

Isso não responde ao problema total de usar os find ' -mtime -tipo especificadores, mas uma análise adicional da sequência de datas (por exemplo, usando date ) poderia ser feita para estender isso.

    
por 05.09.2018 / 15:39