Veo en la página de manual de rsync que hay varias delete
opciones, pero realmente no entiendo 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
--delete-before
se describe como(default)
? No puedo entender lo que(default)
significa.man
página pararsync version 3.1.2 protocol version 31
. Sin embargo, mi suposición sobre la versión con el texto citado es que si solo usa en--delete
lugar de--delete-WHEN
, entonces es como si especificara--delete-WHEN
dónde estáWHEN
predeterminadobefore
.Respuestas:
--del/--delete_during
: Elimina archivos del directorio de destino a medida que se copian (ahorra memoria en comparación con--delete-before
:--delete-before
realiza un escaneo por separado para buscar eliminables)--delete
: Elimina archivos en el directorio de destino si no existen en el directorio de origen.--delete-before
: Elimine archivos en el directorio de destino antes de copiar el archivo con el mismo nombre del directorio de origen--delete-during
: Eliminar archivos en el directorio de destino MIENTRAS copiando el archivo con el mismo nombre del directorio de origen--delete-delay
: Mark elimina durante la transferencia, pero espere hasta que se complete la transferencia--delete-after
: El receptor elimina después de la transferencia, no antes ... Si alguna otra parte de rsync movió archivos adicionales a otra parte, querrá esto en lugar de--delete-delay
, porque--delete-delay
decide lo que va a eliminar en el medio de la transferencia, mientras que--delete-after
busca archivos en el directorio eso debe eliminarse DESPUÉS de que todo haya terminado.--delete-excluded
: Elimina archivos del directorio de destino que se excluyen explícitamente de la transferencia desde el directorio de origen.El punto 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.
La
--delete
bandera en particular es una que he visto arruinada muchas veces. Mucha gente usa rsync para mover archivos a un almacenamiento de baja prioridad, y en este caso desea que los archivos que está moviendo aún EXISTAN en el directorio de destino. Eso no es lo que hace eliminar:--delete
asegúrese de que, cuando elimine un archivo del directorio de origen, TAMBIÉN se elimine de su directorio de destino, para que su destino no se llene de basura ... Una vez que vio a un chico borrar su copia de seguridad poniendo una nueva unidad y no apagando su script rsync nocturno. El script vio que el directorio de origen ahora estaba vacío, y eliminó todos los archivos en el directorio de destino, por lo que coincidirían.La mayoría de las otras opciones están relacionadas con el espacio o el rendimiento. Cuando elimine los archivos es importante si desea asegurarse de que la transferencia se realice correctamente antes de hacer nada, pero si su dispositivo es demasiado pequeño para manejar 2 copias de toda la información, debe eliminarla a medida que avanza, etc. poco loco debido a su larga historia en múltiples plataformas: se han agregado algunas opciones para que las personas que están acostumbradas a cierto comportamiento no se confundan.
fuente
delete-after
elimina cada archivo entre la sincronización o solo después de que se haya reflejado todo el directorio? Pensé quedelete-after
era suficiente para mis necesidades, pero no me queda espacio en el dispositivo cuando hago una copia de seguridad de una de mis unidades.delete-during
no siempre previeneno space left on device
(en Linux). Pordelete-before
lo tanto, es la única forma garantizada de evitarlo (como cuando se refleja una unidad que está casi llena, y la unidad de destino también está casi llena).Hay dos cosas que suceden:
Se puede indicar al remitente o al receptor que elimine (no estoy seguro de por qué esto es importante). Entonces, cuando rsync desde una computadora se conecta al servidor rsync en el otro lado, esto determina quién está emitiendo efectivamente el comando eliminar.
Cuando sucede es bastante fácil ... antes significa que todos los archivos se eliminan, y ENTONCES rsync copia sobre los archivos. durante los medios a medida que avanza por la lista de archivos, los elimina cuando se trata de ellos, y luego significa que espera hasta que se transfieran todos los archivos y luego elimina el lado remoto. Esto solo importa cuando la transferencia se interrumpe.
fuente
--delete-before
eliminar solo aquellos archivos que debían desaparecer, ¡no todos los archivos! Pero supongo que es posible que rsync elimine todo y luego transfiera los datos "nuevos" (posiblemente sin cambios) ...--remove-source-files
.Otro punto que vale la pena mencionar es que si su directorio de origen termina con
/*
, entonces rsync solo considerará esos archivos y no el directorio en sí (y, por lo tanto, la ausencia de archivos que desea eliminar en el destino).Si está especificando una opción de eliminación anterior, pero parece que rsync no se está eliminando, compruebe para asegurarse de que no se está llenando accidentalmente y proporcionando una lista de archivos cuando se refiere al directorio en sí.
fuente