Sincronização de arquivos em tempo real

22

Existe alguma ferramenta disponível para sincronizar arquivos entre dois ou mais servidores Linux imediatamente após a gravação do arquivo no disco? O rsynccomando não combina comigo porque, se eu definir rsyncno cron, o tempo mínimo que posso definir é de 1 minuto, mas preciso em tempo real.

Sourav
fonte
2
Você precisa de sincronização de um servidor de leitura e gravação para um ou mais servidores somente leitura ou precisa de sincronização bidirecional (com propagação em ambas as direções) ou n-way? Se você deseja bidirecional, como você resolve conflitos?
Gilles 'SO- stop be evil' em

Respostas:

18

Ainda não o usei, mas li sobre isso recentemente. Existe um daemon chamado lsyncd, que eu presumo que faz exatamente o que você precisa.

Leia mais AQUI

MelBurslan
fonte
2
IMHO, esta deve ser a resposta aceita. lsyncdusa inotifye deve ser o mais rápido no nível fs. Mais em github.com/axkibe/lsyncd . A partir dessa página: Lsyncd observa uma interface de monitor de eventos de árvores de diretório local (inotify ou fsevents). Ele agrega e combina eventos por alguns segundos e gera um (ou mais) processo (s) para sincronizar as alterações. Por padrão, isso é rsync. O Lsyncd é, portanto, uma solução leve de espelho ao vivo que é comparativamente fácil de instalar, sem exigir novos sistemas de arquivos ou dispositivos de bloqueio e não prejudica o desempenho do sistema de arquivos local.
SACHIN GARG
5

Inotify-tools

Forneça uma interface para inotify, consistindo em:

inotifywait

Este comando simplesmente bloqueia os eventos inotify, tornando-o apropriado para uso em scripts de shell. Ele pode assistir a qualquer conjunto de arquivos e diretórios e pode assistir recursivamente a árvores de diretórios inteiras.

inotifywatch

Este comando coleta estatísticas de uso do sistema de arquivos e gera contagens de cada evento inotify.

Pro Backup
fonte
4

Sincronização de arquivos em tempo real entre vários servidores no modo multi mestre

Existe uma boa ferramenta chamada lsyncdpara sincronizar arquivos entre vários servidores em tempo real. Aqui eu tentei com dois servidores.

Hosts: Servidor1 e Servidor2

SO utilizado: CentOS 7

Instale os pacotes abaixo nos dois servidores.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

gere a chave ssh nos servidores e adicione ao authorized_keysarquivo. [adicione a chave pública do servidor1 ao servidor2 authorized_keyse a chave pública do servidor2 ao authorized_keysarquivo do servidor1 ]

Configuração do Servidor1

Abra /etc/lsyncd.confe comente a configuração padrão usando --no início da linha e adicione a configuração abaixo ao arquivo.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

Altere o IP de destino no targetparâmetro

Você pode alterar o delayparâmetro conforme sua exigência. Aqui está definido 1 segundo.

Agora crie o diretório de log.

# mkdir -p /var/log/lsyncd

Habilite o lsyncdserviço para iniciar automaticamente.

# systemctl enable lsyncd.service

Inicie o serviço.

# systemctl start lsyncd.service

Configuração Server2

Siga a mesma configuração do Server1 e altere o targetIP.

Agora a sincronização está definida.

Você pode verificar a atividade em tailf /var/log/lsyncd/lsyncd.log

Agradeço a MelBurslan por sua sugestão.

Sourav
fonte
O parâmetro de atraso na função de configurações não é válido. Use a variável maxDelays . Eu implementei essa ferramenta. É realmente poderoso.
Hasanuzzaman Sattar 31/03
3

Sincronizar pode ser uma opção. É extremamente rápido, a transferência é criptografada e existem clientes para várias plataformas. Ele usa "inotify" para sincronizar arquivos alterados instantaneamente.

njam
fonte
2

Você precisaria abordar isso com uma solução do tipo de sistema de arquivos em cluster - uma sincronização simples entre as duas máquinas não fornecerá resposta em tempo real.

John
fonte
Na verdade, esses servidores estão na AWS. Portanto, não podemos obter um ambiente em cluster! Não existe outra maneira?
Sourav