Para configurarlo como un 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
Quiero agregar una corrección para el comentario de cybertoast. Quizás el contexto es diferente al mío, pero estaba tratando de extraer archivos simples de un servidor remoto dado el criterio de tiempo. Entonces, el servidor A es mi destino y el servidor B es mi fuente, entonces: rsync -avn --files-from = <(ssh user @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') usuario @ B: / / ruta / en / servidor / A Observe que solo hay una fuente / principal. --Files-from se encarga de la ruta relativa para usted. Si tiene dudas, use man rsync y vea la sección --files-from.
einarc
@cybertoast ¿Qué basenamesignifica en su comando? ¿Puedes explicar por favor?
Kemat Rochi
@KematRochi - "basename, dirname - devuelve el nombre del archivo o la parte del directorio del nombre de la ruta". Espero que ayude.
cybertoast
6
Escribí este script basado en el comentario de cybertoast para sincronizar desde un servidor remoto a local.
Puede llamar al script con ./script.sh 3o ./script.sh 3 drypara una ejecución en 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:. .
Respuestas:
Esto debería ponerte en marcha de una manera sólida
Esto copia nodos de dispositivos, permisos, marcas de tiempo. Estoy bastante seguro de que la opción -H no será precisa con --files-from
fuente
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 en su comando? ¿Puedes explicar por favor?Escribí este script basado en el comentario de cybertoast para sincronizar desde un servidor remoto a local.
Puede llamar al script con
./script.sh 3
o./script.sh 3 dry
para una ejecución en seco.fuente