Respostas:
Isso deve levá-lo a caminho de uma maneira sólida
rsync -RDa0P \
--files-from=<(find sourcedir/./ -mtime -7 -print0) \
. user@B:targetdir/
Isso copia nós do dispositivo, permissões, registros de data e hora. Tenho certeza de que a opção -H não será precisa com --files-from
rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
basename
significa em seu comando? Você pode explicar por favor?
Eu escrevi esse script com base no comentário do cybertoast para sincronizar de um servidor remoto para local.
Você pode chamar o script com ./script.sh 3
ou ./script.sh 3 dry
para uma execução a seco.
#!/bin/bash
TIME=$1
DRYRUN=$2
if [[ -z $TIME ]]; then
echo "Error: no time argument."
echo "Please enter the number of days to sync."
exit 1
fi
if [[ $DRYRUN = "dry" ]]; then
DRYRUNCMD="--dry-run"
echo "Dry run initiated..."
fi
rsync -avz $DRYRUNCMD --files-from=<(ssh \
user@remote "find path/to/data/ \
-mtime -$TIME ! -name *.mkv -type f \
-exec ls $(basename {}) \;") \
user@remote:. .