¿Existe una solución de respaldo de Linux que funcione que use inotify?

17

Se tarda una eternidad en retroceder. Antes de que podamos confiar en btrfs o ZFS para hacer copias de seguridad de las instantáneas incrementales, ¿no sería bueno si hubiera un demonio que usara inotify para realizar un seguimiento de los archivos que realmente han cambiado para que las copias de seguridad se ejecuten más rápidamente? ¿Dónde está este programa?

¿Cómo hago una copia de seguridad de mi caja Linux sin tener que rastrear todo el sistema de archivos cada vez? Me gustaría un programa que detecte las fotos nuevas o modificadas, el código fuente, etc. y las ponga en cola para copiarlas en mi NAS.

joeforker
fuente
Realmente no ha proporcionado mucha información aquí, especialmente con respecto a lo que está utilizando actualmente para hacer una copia de seguridad, qué tipo de datos. Hay varias piezas de software de respaldo que usan diarios para rastrear los cambios en el sistema de archivos, y luego se refieren a ese diario durante un respaldo. ¿Qué es exactamente lo que intenta hacer una copia de seguridad, en qué tipo de dispositivo / aplicación, cuál es la naturaleza de los datos y cuál es su método actual para hacer una copia de seguridad?
WerkkreW
@WerkkreW, no creo que lo que está tratando de hacer una copia de seguridad sea tan importante. Sospecho que sería interesante conocer cualquier cosa que permita realizar copias de seguridad basadas en eventos. La solicitud no es inusual, OSX tiene una máquina del tiempo que se basa en eventos.
Zoredache
Todavía siento que la pregunta necesita un poco más de aclaración antes de que pueda responderse.
WerkkreW
1
@Zoredache, ¡por supuesto, lo que estoy respaldando es importante! Si no fuera importante ... oh, espera ;-) Quiero hacer una copia de seguridad de mi directorio de inicio sin tener una máquina inutilizable durante las n horas que le tomaría a rsync rastrear todo, cuando lo único nuevo es un conjunto de fotos de mi bebé recién nacido.
joeforker
3
La pregunta me parece perfectamente clara: la copia de seguridad de Time Machine de Mac OS X es rápida porque monitorea los eventos para que sepa dónde buscar cuando ejecuta una copia de seguridad. Linux tiene inotify, una instalación similar a fsevents, y sin embargo, las soluciones de respaldo de Linux que intentan aproximarse a Time Machine (por ejemplo, dirvish) son miserablemente lentas porque no aprovechan inotify. ¿Hay alguno que haga?
bendin

Respuestas:

11

Respondí mi propia pregunta con "yum search inotify". Se llama lsyncd y está alojado en el código de google.

Desafortunadamente, parece que siempre ejecuta un rsync completo primero, por lo que todavía no me ayudaría si mi computadora no estuviera encendida por más de 14 horas a la vez.

Lsyncd usa rsync para sincronizar directorios locales con una máquina remota que ejecuta rsyncd. Lsyncd observa varios árboles de directorios a través de inotify. El primer paso después de agregar los relojes es sincronizar todos los directorios con el host remoto y luego sincronizar un solo archivo mediante la recopilación de los eventos de notificación. Por lo tanto, lsyncd es una solución ligera de espejo en vivo que debería ser fácil de instalar y usar mientras se combina bien con su sistema. Consulte lsyncd --help para obtener opciones detalladas de la línea de comandos.

joeforker
fuente
Ese es un enlace interesante, incluso pensé en implementarlo yo mismo. Pero, ¿por qué dice en la página que volverá a transferir archivos grandes para cada cambio? Pensé que rsync ya lo evitaría.
Hanno Fietz el
rsync todavía tiene que volver a leer el archivo completo en ambos extremos para transferirlo de la manera más eficiente posible. La documentación de lsyncd pretende decir que esto puede no ser eficiente para archivos grandes. Para archivos grandes, un esquema de replicación a nivel de bloque sería más apropiado.
joeforker el
3

Hay un nuevo sistema llamado fsnotifydiseñado para resolver las deficiencias inotifyque se introdujo para resolver los problemas dnotify. fsnotifyle permite ver un sistema de archivos completo sin mucho alboroto. Con suerte fsnotify, ayudará a resolver todos nuestros futuros problemas de copia de seguridad de Linux.

joeforker
fuente
2

Puedes hackear algo con incron .

 / ruta1 IN_CLOSE_WRITE rsync -au $ @ / $ # backuphhost: / ruta

hayalci
fuente
incron no puede ver los directorios de forma recursiva
joeforker
bueno, duh! me pareció muy útil: -S
hayalci
2

Según la investigación (no las pruebas), parece que inotify no puede manejar la gran cantidad de archivos en la mayoría de los sistemas y / o es muy lento para hacerlo. El hilo en http://www.pubbs.net/kernel/200905/109416/ fue el más útil. Apuntó a una nueva característica de Linux que parece estar en la línea principal, fsnotify, que está en Linux 2.6.31. y después.

user26055
fuente
2

Lsyncd sincroniza todo el árbol observado en el inicio, porque para el 99% de los casos, esto es lo más sensato. Desea el directorio en el host de destino que tiene en el host local, de lo contrario, las sincronizaciones pueden fallar y desea sincronizar las cosas que perdió mientras estaba apagado. Sin embargo, si sabe lo que está haciendo, puede desactivar la sincronización de inicio, solo configure sync {..., startup = false} en el archivo de configuración Lsyncd.

con respecto a inotify, no es la cantidad de archivos sino la cantidad de directorios que consumen recursos. Un directorio es un reloj, independientemente de cuántos archivos contenga.

la creación de fanotify en fsnotify como inotify parecía muy prometedora para las personas que veían toneladas de directorios, pero actualmente a partir de Linux 2.6.37 fanotify no informa eventos de cambio de nombre (mover), lo que lo hace inutilizable para un trabajo como este :-(

axkibe
fuente
¿Ni siquiera como una eliminación seguida de una creación?
joeforker
1
no en mis pruebas, no :-( fanotify fue diseñado con el escudo de virus en mente, y en mi humilde opinión está diseñado exactamente al mínimo que necesita.
axkibe
1

He pasado 6 meses buscando la mejor solución para realizar lo que intentas hacer; copia de seguridad eficiente a un NAS. Después de la sincronización inicial, todo lo demás es suave como la mantequilla. La última versión de Lsyncd funciona bastante bien. He documentado lo que he hecho en el siguiente enlace. Simplemente sustituya los valores de su carpeta. Espero que esto ayude:

https://docs.google.com/document/d/1XpqM5h5YMwuQqzdknyDDnjcQVYGjAsyAxfYprqSnhd0/edit

Bobo
fuente