Existe uma solução de backup do Linux que use inotify?

17

Demora uma eternidade para fazer o backup. Antes de confiarmos no btrfs ou no ZFS para fazer backup de snapshots incrementais, não seria legal se houvesse um daemon que usasse o inotify para rastrear quais arquivos realmente foram alterados para que os backups sejam executados mais rapidamente? Onde está esse programa?

Como faço backup da minha caixa do Linux sem ter que rastrear todo o sistema de arquivos toda vez? Gostaria de um programa que detectasse as fotos novas ou alteradas, o código-fonte, etc. e as enfileirasse para serem copiadas no meu NAS.

joeforker
fonte
Você realmente não forneceu muita informação aqui, especialmente sobre o que você está usando atualmente para fazer backup, que tipo de dados. Existem várias partes do software de backup que usam diários para rastrear alterações no sistema de arquivos e depois se referem a esse diário durante um backup. Do que exatamente você está tentando fazer backup, para que tipo de dispositivo / aplicativo, qual é a natureza dos dados e qual é o seu método atual para fazer backup deles?
WerkkreW 13/05/09
@WerkkreW, não acho que o que ele está tentando fazer backup seja tão importante. Suspeito que qualquer coisa que permita o backup baseado em eventos seja interessante para aprender. A solicitação não é incomum, o OSX possui uma máquina do tempo que é baseada em eventos.
Zoredache
Ainda sinto que a pergunta precisa de mais esclarecimentos antes de ser respondida.
11009 WerkkreW
1
@ Zoredache, é claro que o que estou fazendo é importante! Se não fosse importante ... oh, espere ;-) Eu quero fazer backup do meu diretório home sem ter uma máquina inutilizável pelas n horas que levaria para o rsync rastrear a coisa toda, quando o único material novo fosse um conjunto de fotos do meu bebê recém-nascido.
31119 joeforker
3
A pergunta parece perfeitamente clara para mim: o backup do Time Machine do Mac OS X é rápido porque monitora os eventos para que ele saiba onde procurar quando executa um backup. O Linux tem inotify, um recurso semelhante ao fsevents, e ainda assim as soluções de backup do Linux que tentam aproximar o Time Machine (por exemplo, dirvish) são extremamente lentas porque não tiram vantagem do inotify. Há algum que faça?
22410 bendin

Respostas:

11

Respondi minha própria pergunta com "yum search inotify". Chama-se lsyncd e está hospedado no código do google.

Infelizmente, parece que ele sempre executa um rsync completo primeiro, por isso ainda não me ajudaria se meu computador não estivesse ligado por mais de 14 horas por vez.

O Lsyncd usa o rsync para sincronizar diretórios locais com uma máquina remota executando o rsyncd. O Lsyncd observa várias árvores de diretórios através do inotify. A primeira etapa após adicionar os relógios é sincronizar todos os diretórios com o host remoto e sincronizar o arquivo único coletando os eventos inotify. Portanto, o lsyncd é uma solução leve de espelho ao vivo que deve ser fácil de instalar e usar enquanto combina bem com o seu sistema. Consulte lsyncd --help para obter opções detalhadas da linha de comando.

joeforker
fonte
Esse é um link interessante, eu até pensei em implementar isso sozinho. Mas por que diz na página que irá transferir novamente arquivos grandes para cada alteração? Eu pensei que o rsync em si já evitaria isso?
10119 Hanno Fietz
O rsync ainda precisa reler o arquivo inteiro nas duas extremidades para transferi-lo da maneira mais eficiente possível. A documentação do lsyncd pretende dizer que isso pode não ser eficiente para arquivos grandes. Para arquivos grandes, um esquema de replicação em nível de bloco seria mais apropriado.
9139 joeforker
3

Existe um novo sistema chamado fsnotifyque foi projetado para solucionar as deficiências inotifyintroduzidas para solucionar os problemas dnotify. fsnotifypermite assistir a um sistema de arquivos inteiro sem muito barulho. Esperamos fsnotifyque ajude a resolver todos os nossos futuros problemas de backup do Linux.

joeforker
fonte
2

Você pode hackear algo com o incron .

 / path1 IN_CLOSE_WRITE rsync -au $ @ / $ # backuphhost: / path

hayalci
fonte
incron não pode assistir pastas de forma recursiva
joeforker
bem, duh! parecia muito útil: -S
hayalci
2

Com base em pesquisas (não em testes), parece que o inotify não consegue lidar com um número muito grande de arquivos na maioria dos sistemas e / ou é muito lento. O tópico em http://www.pubbs.net/kernel/200905/109416/ foi o mais útil. Ele apontou para um novo recurso do linux que parece estar direcionado para a linha principal, fsnotify, que está no linux 2.6.31 e depois.

user26055
fonte
2

O Lsyncd sincroniza toda a árvore observada na inicialização, porque para 99% dos casos, isso é sensato. Você deseja o diretório no host de destino que possui no host local; caso contrário, as sincronizações poderão falhar e você deseja sincronizar as coisas que você perdeu enquanto estava desligado. No entanto, se você souber o que está fazendo, poderá desativar a sincronização de inicialização, apenas defina a sincronização {..., startup = false} no arquivo de configuração do Lsyncd.

em relação à inotify, não é o número de arquivos, mas o número de diretórios que consomem recursos. Um diretório é um relógio, independentemente de quantos arquivos ele contém.

O fanotify baseado no fsnotify como inotify parecia muito promissor para as pessoas que assistiam a vários diretórios, mas atualmente no Linux 2.6.37 o fanotify não relata eventos de renomeação (movimentação), tornando-o inutilizável para um trabalho como este :-(

axkibe
fonte
Nem como uma exclusão seguida por uma criação?
joeforker
1
não nos meus testes, não :-( O fanotify foi projetado com o escudo antivírus em mente, e o IMHO é adaptado agora exatamente ao mínimo necessário.
axkibe
1

Passei 6 meses procurando a melhor solução para executar o que você está tentando fazer; efetivamente fazer backup em um NAS. Após a sincronização inicial, tudo o resto é suave como manteiga. A versão mais recente do Lsyncd funciona muito bem. Eu documentei o que fiz no link abaixo. Apenas substitua os valores da pasta. Espero que isto ajude:

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

Bobo
fonte