Solución 1:
rsync --progress --files-from=<(find /src_path -mtime -3 -type f -exec basename {} \;) /src_path/ /dst_path
Solución 2:
Querrías hacer un find entonces sync
find /path -file -mtime +3 -exec rsync {} destination \;
Solución 3:
Suponiendo que desea sincronizar alguna carpeta de un servidor a una carpeta local, pero siempre desea sincronizar solo los archivos que se han creado desde la última sincronización. Entonces el siguiente comando podría ser útil. Poniendo esto, por ejemplo, su .bashrc define un alias que sincroniza todos los archivos recién creados. Los archivos se pueden eliminar localmente y no se sincronizarán nuevamente cuando se vuelva a llamar al comando de sincronización. Solo los archivos que se hayan creado después de la última sincronización en el servidor se copiarán en la carpeta local.
TARGET=/local/target/folder/
SOURCE=/server/folder/
alias sync-since-last="touch $TARGET/last_sync && rsync -ahv --update --files-from=<(ssh example@unixlinux.online 'find $SOURCE/source/ -type f -newer $SOURCE/last_sync -exec basename {} \;') example@unixlinux.online:$SOURCE/source/ $TARGET && rsync -ahv $TARGET/last_sync example@unixlinux.online:$SOURCE"
Solución 4:
Modificar la respuesta de Thomas, que se sincroniza en función de la fecha de modificación de un archivo en un script, para que sea más legible para los humanos y también para sincronizar carpetas anidadas.
#!/bin/bash
TARGET=/PATH/TO/TARGET
example@unixlinux.online
SOURCE=/ABSOLUTE/SOURCE/PATH/ON/HOST
touch $TARGET/last_sync
rsync \
-ahrv \
--update \
--files-from=<(ssh $HOST "find $SOURCE -type f -newer $SOURCE/last_sync -exec realpath --relative-to=$SOURCE '{}' \;") \
$HOST:$SOURCE \
$TARGET
rsync -ahv $TARGET/last_sync $HOST:$SOURCE
Para init, probablemente debería crear un last_sync archivo de forma remota, para lo cual el siguiente comando es útil
touch -d "2 hours ago" last_sync
que crea un archivo llamado last_sync con una fecha de creación de hace 2 horas.