¿Qué hará exactamente --delete-excluded para rsync?

32

Utilizo rsync con gran placer para hacer una copia de seguridad de mis servidores, aunque tengo una pregunta sobre el --delete-excludedparámetro.

/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded     --rsh=/usr/bin/ssh root@server01:/etc /.snapshot/hourly.0/server01

De man rsync:

 --delete-excluded       also delete excluded files from dest dirs

Para mí, un nativo no inglés, esto significa que rsync eliminará los directorios excluidos del directorio de destino real en el servidor remoto, por lo que si tengo /home/backupy /home/settingsen mis carpetas de exclusión, esas carpetas se eliminarán del servidor remoto .

De varios otros recursos, parece que eliminará los archivos de la carpeta de copia de seguridad local para ahorrar espacio. Por ejemplo, puede crear pequeñas copias de seguridad en el servidor y excluir estos datos, para no desperdiciar espacio de almacenamiento.

Sin embargo, es vital para mí que rsync haga su trabajo de una sola manera, ya que la gente dice que está destinado a funcionar, no quiero correr ningún riesgo al tener un software que elimine archivos / directorios en el servidor remoto.

ujjain
fuente

Respuestas:

37

Tu interpretación es correcta. Si ha excluido la transferencia de archivos o directorios, --delete-excluded los eliminará del lado de destino (este no tiene que ser el "servidor remoto", puede usarlo rsyncpara copiar desde un servidor a la computadora local) si los encuentra allí. Por ejemplo, si usa --exclude=*.o --delete-excluded, entonces si rsync encuentra algún archivo que termine en .o en el lado de destino, los eliminará si existen en el directorio de origen o no.

DerfK
fuente
1
Entonces, ¿eliminará los directorios / archivos de /.snapshot/hourly.0/server01 y no el servidor remoto?
ujjain
3
@chronoz Si está copiando desde el servidor remoto a la computadora local, entonces el destino es la computadora local. Si está copiando desde la computadora local al servidor remoto, el destino es el servidor remoto. El destino es lo importante aquí. Si el destino es el servidor remoto, eliminará los archivos del servidor remoto.
DerfK
Confirmación aquí: comentum.com/rsync.html
SDsolar
1
Recientemente descubrí que "--delete-excluded" es completamente equivalente a "--delete --delete-excluded". En el ejemplo de respuesta proporcionado anteriormente, los archivos remotos que no están presentes en el lado de origen también se eliminarán.
Wayne