¿Qué sucede si rsnapshot / rdiff-backup se interrumpe en medio de una transferencia?

20

La pregunta lo dice todo:

¿Qué sucede si se interrumpe rsnapshot o rdiff-backup en medio de una transferencia?

Sé que rsnapshot intenta hacer una instantánea completa de su sistema de forma rotativa, y rdiff-backup realiza una copia de seguridad diferencial, que se basará en los archivos previamente guardados detrás de él.

Entonces: ¿Qué sucede si se interrumpe en el medio?

¿Esto resulta en una "instantánea incompleta"?

¿Se corromperán otras instantáneas que dependen de esta? (Seguramente no, pero ...?)

emf
fuente
1
¿No habría sido mucho más claro si hubiera separado esta pregunta en dos preguntas separadas?
andol
2
@andol Si estaba buscando información sobre cómo recuperarse de una transferencia interrumpida, creo que sería mejor que dos preguntas. Sin embargo, interpreté que esto es más una solicitud de una comparación de la cantidad de problemas en los que estaría metido si usara cada utilidad, como si fuera una variante de "ayudarme a decidir cuál usar".
ændrük
Gracias andol; pero no, creo que esta es una pregunta. Básicamente, "¿qué sucede si rsnapshot / rsync se interrumpe en medio de la transferencia?", Y creo que las herramientas abarcan un nicho específico, por lo que esto no garantiza la OMI dos preguntas separadas. Planteé la cuestión de la "instantánea incompleta" como un resultado potencial para fines de aclaración.
fem

Respuestas:

22

Entiendo que ...

rdiff-backup detectará el incremento incompleto la próxima vez que se ejecute. Eliminará el incremento incompleto para que la ubicación de la copia de seguridad sea la misma que si el intento de copia de seguridad interrumpido nunca se hubiera iniciado.

rsnapshot es un poco más complicado porque su rutina es más gradual y varía según el uso de las opciones sync_firsty use_lazy_deletes.

  • Si usa sync_firsty rsnapshot syncse interrumpe, simplemente puede rsnapshot syncvolver a correr para enderezar las cosas. Si rsnapshot <backup level>, por el contrario, se ejecuta accidentalmente en este punto, el último punto de respaldo permanecerá incompleto y se realizará mediante rotaciones.
  • Si no lo usa sync_first, simplemente está atascado con un punto de copia de seguridad incompleto que es un híbrido de versiones antiguas y nuevas de archivos. A menos que gire manualmente hacia atrás cada punto de respaldo, el punto de respaldo incompleto se realizará mediante rotaciones.
  • En ambos casos, la ejecución rsnapshot <backup level>hará que se pierda el punto de copia de seguridad más antiguo a menos que use_lazy_deletesesté habilitado.

Tenga en cuenta eso sync_firsty use_lazy_deletestenga el costo de usar más espacio en disco.


Un recordatorio / descargo de responsabilidad: esto debería ser obvio, pero nunca confíe ciegamente en los consejos de otros en Internet. Si planea usar rdiff-backup o rsnapshot para algo de misión crítica , lea cada palabra del manual y pruebe, pruebe, pruebe todo usted mismo.

ændrük
fuente
1
Un recordatorio apreciable, y una buena práctica para mantenerse al día con este tipo de cultura de "métodos adecuados", no queremos que Linux se convierta en tierra de consumo tonto. Gracias por la nota
fem
Entonces, entendiendo correctamente: tener una copia de seguridad incompleta "realizada a través de las rotaciones" para rsnapshot equivaldrá a dos cosas: 1. Esa instantánea estará incompleta si se hace referencia en un punto posterior 2. Cualquier instantánea de nivel superior aún estará completa , pero no se referirá correctamente a los archivos enlazables anteriores que se perdieron en la instantánea incompleta. ¿Es esto correcto?
fem
1

Eso me acaba de pasar. mi unidad externa se llenó a la mitad de la copia de seguridad incremental de rsnapshot:

rsync: write failed on "<path>": No space left on device (28) 

Ahora me gustaría compartir un par de cosas que aprendí de esto. es decir, para reparar y limitar considerablemente las posibilidades de que tal caso me muerda;)

Reanudar la copia de seguridad interrumpida de una Rsnapshot

Sé dos maneras de hacer retroceder eso de forma segura.

A mano

  1. Eliminar el último directorio (p. Ej., Daily.0)
  2. Renombrar directorios consecutivos (daily.1 -> daily.0, ...); posible script 1
  3. Ejecute la copia de seguridad como de costumbre (nuevamente).

Automáticamente

rsnapshot no tiene capacidades de pausa / detención y reanudación (excepto por el limitado " omitido debido al plan de reversión " 2 ), por lo que tenemos que usar un contenedor para manejar estas características.

rsnapshot-once3 por Philipp C. Heckel es un contenedor para rsnapshot en PHP que:

  • funciona sin modificar la configuración de su rsnapshot
  • asegúrese de que las tareas diarias, semanales y mensuales se ejecuten solo una vez en el período de tiempo respectivo, a través de cron (bueno para computadoras portátiles)
  • reversión de la copia de seguridad fallida (comprueba si la última copia de seguridad se completó; si no, el último directorio se elimina y los directorios consecutivos se renombran, por ejemplo, daily1. -> daily.0, ...)

Utilizándolo durante un año, soy un usuario feliz: edité php.ini openbase_dirpara mi necesidad de copia de seguridad y listo, día de suerte ^ _ ^ Más suave y seguro que mi solución anterior basada en rsnapshot.

Nota: slm me vinculó aquí desde una pregunta duplicada: destino de Rsnapshot lleno: ¿cómo volver a ejecutarlo de manera segura?

tuk0z
fuente