168 votos

¿Cuáles son las diferencias entre las opciones de eliminación de rsync?

Veo en el Página de manual de rsync que hay una serie de delete opciones, pero no entienden realmente las diferencias entre ellas. ¿Cuáles son las diferencias entre estas opciones?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs

164voto

JeremyDWill Puntos 2181
  • --del/--delete_during : Elimina los archivos del directorio de destino a medida que se copian (ahorra memoria en comparación con --delete-before : --delete-before hace un escaneo separado para buscar los elementos que se pueden borrar)

  • --delete : Elimina los archivos en el directorio de destino si no existen en el directorio de origen.

  • --delete-before : Elimina los archivos del directorio de destino antes de copiar el archivo con el mismo nombre del directorio de origen

  • --delete-during : Borrar archivos en el directorio de destino MIENTRAS se copian archivos con el mismo nombre del directorio de origen

  • --delete-delay : Marcar los borrados durante la transferencia, pero esperar a que ésta se complete

  • --delete-after : El receptor borra después de la transferencia, no antes... Si alguna otra parte del rsync moviera archivos adicionales a otro lugar, querrías esto en lugar de --delete-delay porque --delete-delay decide lo que va a borrar en medio de la transferencia, mientras que --delete-after comprueba el directorio en busca de archivos que deban ser eliminados DESPUÉS de que todo haya terminado.

  • --delete-excluded : Elimina los archivos del directorio de destino que están explícitamente excluidos de la transferencia del directorio de origen.

El objetivo de rsync no es copiar, es archivar. Esta es una distinción importante. El procesamiento de archivos borrados/modificados es crítico, y en muchos casos matizado.

El --delete La flag en particular es una que he visto estropear muchas veces. Mucha gente utiliza rsync para mover archivos a un almacenamiento de baja prioridad, y en este caso quieres que los archivos que estás moviendo todavía EXISTAN en el directorio de destino. Eso no es lo que hace delete: --delete se asegura de que, cuando se elimina un archivo del directorio de origen, también se elimina del directorio de destino, para que el destino no se llene de basura... Una vez vi a un tipo borrar su copia de seguridad por poner un nuevo disco, y no apagar su rsync nocturno script. script vio que el directorio de origen estaba vacío, y borró todos los archivos del directorio de destino, para que coincidieran.

La mayoría de las otras opciones están relacionadas con el espacio o el rendimiento. El momento en el que se borran los archivos es importante si quieres asegurarte de que la transferencia se realiza correctamente antes de hacer nada, pero si tu dispositivo es demasiado pequeño para manejar 2 copias de toda la información, tienes que borrar sobre la marcha, etc. Es un poco extraño debido a su larga historia en múltiples plataformas: se han añadido algunas opciones para que la gente que estaba acostumbrada a ciertos comportamientos no se confundiera.

3voto

Walt Stoneburner Puntos 175

Otro punto que vale la pena mencionar es que si su directorio fuente termina con /* , entonces rsync sólo considerará esos archivos y no el propio directorio (y por lo tanto la ausencia de archivos que desea eliminar en el destino).

Si está especificando una opción de borrado arriba, pero rsync parece que no está borrando, entonces compruebe que no está globeando accidentalmente y proporcionando una lista de archivos cuando quiere decir el propio directorio.

2voto

ManiacZX Puntos 1461

Están ocurriendo dos cosas:

  1. Quién hace el borrado
  2. Cuando sucede

Se puede ordenar al emisor o al receptor que haga el borrado (no estoy seguro de por qué esto es importante). Así que cuando rsync desde un ordenador se conecta al servidor rsync en el otro lado, esto determina quién está emitiendo efectivamente el comando de borrado.

Cuándo sucede es bastante fácil... antes significa que todos los archivos se borran, y LUEGO rsync copia los archivos. durante significa que a medida que recorre la lista de archivos, los borra cuando llega a ellos, y después significa que espera hasta que todos los archivos se transfieren y entonces borra la parte remota. Esto sólo importa cuando la transferencia se interrumpe.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X