rsync --delete Limpieza de directorios explicada y práctica

Aprenda qué hace rsync --delete, patrones de uso comunes y precauciones clave, incluida una forma práctica de limpiar rápidamente un directorio de destino utilizando un directorio de origen vacío.

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

1
rsync -a --delete source_dir/ target_dir/
  • -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:

1
2
3
4
5
# 1) Create an empty directory
mkdir -p /tmp/empty_dir

# 2) Sync and delete target-side content
rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/

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):

1
rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/

Recomendaciones

  • Ejecute primero con --dry-run para 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.
记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy