Lamentablemente, no existe un método integrado en Rsync en el momento de la escritura.
La solución de Mike Fitzpatrick funcionará bien, sin embargo, si tiene un árbol de directorios muy grande, es posible que desee hacer algo que no haga que rsync vuelva a revisar todos los archivos
EDITAR: También hay un error en el que no se elimina un archivo de destino ... cuanto más lo miro, esta solución se rompe ... Lo dejo porque puede funcionar en su caso y también si alguien quiere arreglarlo. Además, alguien debe enviar una solicitud de función formal a https://bugzilla.samba.org/enter_bug.cgi?product=rsync
Escribí este script:
#! /bin/bash
# Make a temp file for storing the output of rsync
tmpfile=$( mktemp ) &&
# Do all the hard work ( get the list of files we need to update ),
# but dont actually change the filesystem
rsync --dry-run --out-format='RSYNC_CONFIRM %i %n%L' "$@" | grep RSYNC_CONFIRM | awk '{ print $3 }' > $tmpfile &&
# Output to the user what we propose to do
rsync --dry-run --itemize-changes --files-from=$tmpfile "$@" &&
# Alternatively, we could just output $tmpfile... but whatever...
read -p "Continue? (y/n)?" &&
if [[ $REPLY = [yY] ]]
then
{
rsync --files-from=$tmpfile "$@"
}
fi
rm $tmpfile
Intente pegar el script en un archivo llamado rsync-confirm.bash
Entonces chmod +x rsync-confirm.bash
Entonces ./rsync-confirm.bash -rvh /etc/ /tmp/etc/
Este script puede ser un poco defectuoso, noté que realmente no le gusta si no tiene una barra diagonal en el directorio de origen ...