Veo en la página de manual de rsync que hay varias deleteopciones, 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-beforese describe como(default)? No puedo entender lo que(default)significa.manpá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--deletelugar de--delete-WHEN, entonces es como si especificara--delete-WHENdónde estáWHENpredeterminadobefore.Respuestas:
--del/--delete_during: Elimina archivos del directorio de destino a medida que se copian (ahorra memoria en comparación con--delete-before:--delete-beforerealiza 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-delaydecide lo que va a eliminar en el medio de la transferencia, mientras que--delete-afterbusca 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
--deletebandera 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:--deleteasegú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-afterelimina cada archivo entre la sincronización o solo después de que se haya reflejado todo el directorio? Pensé quedelete-afterera suficiente para mis necesidades, pero no me queda espacio en el dispositivo cuando hago una copia de seguridad de una de mis unidades.delete-duringno siempre previeneno space left on device(en Linux). Pordelete-beforelo 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-beforeeliminar 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