¿Por qué una copia espejo de Rsync copia eliminaciones accidentales al respaldo?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

Un espejo rsync copia eliminaciones accidentales porque un espejo está diseñado para hacer que el destino coincida con la fuente actual. Cuando el trabajo usa --delete o una opción de eliminación relacionada, un archivo que falta en el NAS doméstico se trata como un archivo extra en el destino de respaldo y se elimina durante la sincronización. Ese comportamiento es correcto para un espejo, pero es inseguro como único historial de recuperación.

Rsync sigue una regla de espejo, no preserva cada versión pasada

Sin una opción de eliminación, rsync normalmente copia archivos nuevos y modificados pero deja en su lugar los archivos que solo están en el destino. Con --delete, el destino se reconcilia con la fuente. Una explicación concisa de la bandera indica que eliminar un archivo de la fuente también lo elimina del destino para que el destino siga siendo un espejo verdadero.

Para un NAS doméstico ZimaSpace, esto significa que una foto familiar eliminada, una carpeta de medios renombrada, una configuración de contenedor eliminada o un montaje temporalmente ausente puede reflejarse en el espejo USB o remoto en la siguiente ejecución programada.

La eliminación comienza con una ruta fuente faltante

Rsync no sabe si un archivo desapareció porque lo eliminaste intencionalmente, una aplicación lo limpió, un usuario cometió un error, un ransomware cambió el árbol o un conjunto de datos fuente no se montó. Compara el árbol visible de la fuente con el del destino. Si un objeto existe solo en el lado receptor y la eliminación está habilitada, se convierte en candidato a eliminación.

Evento de la fuente Lo que rsync ve Resultado del espejo con eliminación habilitada
El usuario elimina una carpeta de fotos Carpeta ausente en la fuente Carpeta eliminada del espejo
La aplicación contenedora elimina medios antiguos Archivos ausentes en la ruta de datos de la aplicación Archivos eliminados del espejo
El pool de datos NAS no se monta La ruta de la fuente puede aparecer vacía Se puede proponer un conjunto grande de eliminaciones
Cambios en la ruta compartida El árbol antiguo de la fuente ya no se escanea El contenido antiguo del destino puede ser eliminado

El momento de la eliminación cambia cuándo se eliminan los archivos, no si se eliminan.

Las opciones relacionadas controlan la fase de la transferencia. --delete-before elimina archivos que solo están en el destino antes de copiar, --delete-during elimina mientras se procesan los directorios, y --delete-after espera hasta que las transferencias terminen. Afectan el comportamiento del espacio libre y la exposición a fallos, pero no convierten el espejo en una copia de seguridad versionada.

Usa el tiempo de eliminación deliberadamente. Eliminar antes de la transferencia puede liberar capacidad pero elimina el estado anterior del espejo antes. Eliminar después de la transferencia preserva el contenido antiguo del destino por más tiempo, pero el resultado final aún coincide con la fuente si el trabajo se completa.

Un montaje faltante puede parecer una eliminación masiva

Uno de los casos más peligrosos en servidores domésticos ocurre cuando la ruta de origen programada aún existe como un directorio vacío después de que el grupo de almacenamiento real no se monta. Rsync puede entonces comparar un origen vacío con un destino poblado. Una salvaguarda propuesta es ejecutar una verificación en seco y contar las eliminaciones planificadas antes de permitir la sincronización real.

En un NAS doméstico, haga que el trabajo falle si falta el montaje esperado del origen, UUID del sistema de archivos, directorio marcador o el conteo mínimo de archivos. No permita que la existencia de una ruta vacía cuente como un origen saludable.

Pausar el trabajo antes de intentar recuperar un archivo eliminado

  1. Desactive la tarea programada de rsync inmediatamente.
  2. No ejecute el comando nuevamente para “ver si se arregla solo.”
  3. Revise instantáneas, papeleras de reciclaje, repositorios de respaldo versionados y la segunda copia fuera de línea.
  4. Si el espejo aún contiene el archivo, cópielo a una ruta de cuarentena fuera del destino rsync antes de la siguiente ejecución.
  5. Confirme si la eliminación en el origen fue intencional antes de restaurarla en la carpeta compartida activa.

El artículo de ZimaSpace sobre mantener fotos familiares en múltiples copias independientes es relevante aquí: un espejo sincronizado debe ser una capa, no el único lugar donde un archivo antiguo pueda sobrevivir.

Previsualice el conjunto exacto de eliminaciones

Ejecute el mismo comando con --dry-run, itemización detallada y reporte de eliminaciones. Revise las rutas de origen y destino, las barras finales, exclusiones, estado de montaje y el número de eliminaciones planificadas. Un artículo reciente sobre seguridad en rsync enfatiza que un espejo puede reproducir eliminaciones accidentales o daños por ransomware y por lo tanto necesita una capa de historial separada.

rsync -a --delete --dry-run --itemize-changes   /srv/storage/family/ /mnt/usb-mirror/family/  

Trate un conteo inesperadamente alto de eliminaciones como una verificación previa fallida. Deténgase y verifique que el conjunto de datos NAS previsto esté montado y que el comando no esté dirigido a un directorio padre o al disco extraíble incorrecto.

Mover los archivos eliminados a un área de recuperación

Si necesitas un espejo pero también quieres una ventana corta de recuperación, combina la eliminación con un directorio de respaldo o una capa de instantáneas. Rsync puede mover archivos reemplazados o eliminados del destino a un directorio de recuperación fechado en lugar de destruirlos inmediatamente. La guía comunitaria para conservar datos eliminados con rsync recomienda mantener los archivos eliminados en una ubicación separada con su propia política de limpieza.

rsync -a --delete   --backup   --backup-dir="/mnt/usb-mirror/deleted/$(date +%F)"   /srv/storage/family/ /mnt/usb-mirror/current/

Prueba el comando primero con datos no críticos. El directorio de recuperación debe estar fuera del subárbol reflejado, o una ejecución futura podría tratarlo como parte de la fuente o eliminarlo mediante la misma política.

Usa instantáneas versionadas cuando importen los estados pasados

Un espejo actual responde “¿cómo se ve la fuente ahora?” Una copia de seguridad responde “¿cómo se veía la fuente antes del error?” Si necesitas ambos, mantén el espejo para acceso rápido y añade instantáneas del sistema de archivos, directorios de instantáneas con enlaces duros, una herramienta de copia de seguridad versionada o un segundo disco fuera de línea.

Un relato sobre una eliminación accidental con rsync describe claramente la debilidad subyacente: un flujo de trabajo rsync hecho a mano necesita rotación explícita y salvaguardas de eliminación. No confíes en un destino mutable para proporcionar tanto sincronización exacta como historial a largo plazo.

Preguntas frecuentes

Si elimino --delete, ¿el espejo se convierte en una copia de seguridad?

No por sí sola. Los archivos que solo están en el destino permanecerán, pero los archivos sobrescritos pueden perder su contenido anterior, y no hay un punto de restauración limpio para una fecha específica. Añade instantáneas o un repositorio de copias de seguridad versionado.

¿Cuál opción de tiempo de eliminación es la más segura?

--delete-after retrasa las eliminaciones hasta que las transferencias terminen, lo que preserva el estado antiguo del destino por más tiempo durante la ejecución. Aún así elimina archivos que solo están en el destino al finalizar, por lo que las verificaciones previas y el historial de versiones siguen siendo necesarios.

¿Cómo detengo una eliminación masiva inesperada?

Desactiva el programa, ejecuta una simulación con salida de eliminación, verifica el montaje y la ruta de la fuente, y establece un umbral de conteo de eliminaciones o una verificación de archivo marcador. No vuelvas a ejecutar el comando en vivo hasta entender la lista propuesta de eliminaciones.

Conclusión final

Rsync refleja eliminaciones accidentales porque las opciones de eliminación hacen que el destino de la copia de seguridad coincida con la fuente visible del NAS. Protege un flujo de trabajo de servidor doméstico ZimaSpace verificando los montajes, previsualizando las eliminaciones, poniendo en cuarentena los archivos eliminados y manteniendo puntos de recuperación versionados o fuera de línea. Un espejo puede ser útil, pero un espejo exacto sin historial no es una protección suficiente contra errores humanos.

Soporte y Consejos

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.