Eu testei apenas parcialmente a minha solução, pois não tenho um sistema remoto, mas entendo que seu problema está sendo sincronizado de / a / (a árvore inteira). rsync aceitará uma origem e um destino, mas find está fornecendo caminhos completos, portanto, só funcionará se você sincronizar a árvore inteira. Meu primeiro pensamento foi usar sed para retirar a parte principal dos caminhos e, em seguida, especificar a origem para rsync para que possa encontrar esses arquivos e especificar o destino também
find ... | sed -z 's/^\/mnt\/movies\///' | rsync ...
(usando -z para informar sed para usar separadores NULL de -print0 e --from0 )
Mas, steeldriver apontou em um comentário que podemos alcançar a mesma coisa sem sed usando printf '%P em vez de apenas print0'find no comando movie1/1.mkv , e isso não exatamente o mesmo que a minha idéia, mas muito mais elegantemente (descartando a parte do caminho especificado no comando).
Fazendo isso, cada caminho de arquivo será apenas --from0 / [email protected]:/ . Assim, no final, em vez de rsync , diga %code% onde procurar esse caminho e onde encontrar o destino no sistema remoto:
--from0 /mnt/movies [email protected]:/mnt/drive/movies
Isso funciona bem para mim com cópia local.
comando completo sugerido:
find /mnt/movies -type f -ctime -1 -printf '%Pfind ... | sed -z 's/^\/mnt\/movies\///' | rsync ...
' | rsync -Prvuz --log-file=/home/daisy/rsync/movies.log -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --files-from=- --from0 /mnt/movies [email protected]:/mnt/drive/movies