El propósito principal de rsync --delete es eliminar archivos en el directorio de destino que no existen en el directorio de origen, para que ambos lados permanezcan consistentes.
Los casos de uso típicos incluyen:
- Limpieza de archivos obsoletos en el lado de destino durante la sincronización
- Vaciar rápidamente un directorio de destino sincronizando desde un directorio de origen vacío
Sintaxis básica
|
|
-a: modo de archivo, conserva permisos, marcas de tiempo y otros atributos--delete: elimina archivos adicionales en el lado de destino
Nota importante: si source_dir termina con / cambia el comportamiento. Con /, rsync sincroniza el contenido del directorio; sin /, sincroniza el directorio mismo.
Vaciar rápidamente un directorio de destino con un origen vacío
Si su objetivo es mantener la ruta del directorio pero borrar todo el contenido, use un directorio vacío como fuente:
|
|
En escenarios de directorios grandes, esto suele ser más eficiente que eliminar archivos uno por uno y es más fácil de automatizar en scripts.
Opciones extendidas comunes
--delete-before: eliminar antes de la transferencia, lo que puede ser más rápido en algunos casos--progress: muestra el progreso de la transferencia y el procesamiento
Ejemplo (limpieza de un directorio de registro de Nginx):
|
|
Recomendaciones
- Ejecute primero con
--dry-runpara verificar el alcance de la eliminación. - Haga una copia de seguridad del directorio de destino antes de ejecutarlo en producción.
- Para rutas críticas, programe la ejecución durante las horas de menor actividad.