Para definir isso como um filtro remoto: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
cybertoast
Quero adicionar uma correção ao comentário de cybertoast. Talvez o contexto dele seja diferente do meu, mas eu estava tentando extrair arquivos simples de um servidor remoto, considerando os critérios de tempo. Portanto, o servidor A é meu destino e o servidor B é minha fonte, então: rsync -avn --files-from = <(usuário ssh @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') user @ B: / / path / in / server / A Observe que há apenas uma fonte principal / para. O --files-from cuida do caminho relativo para você. Se você tiver dúvidas, use man rsync e consulte a seção --files-from.
einarc
@cybertoast O que basenamesignifica em seu comando? Você pode explicar por favor?
Kemat Rochi
@KematRochi - "basename, dirname - retorna o nome do arquivo ou parte do diretório do nome do caminho". Espero que ajude.
cybertoast
6
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 3ou ./script.sh 3 drypara 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:. .
Respostas:
Isso deve levá-lo a caminho de uma maneira sólida
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
fonte
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.fonte