Sincronização de arquivos em tempo real

13

Existe alguma ferramenta disponível para sincronizar arquivos entre dois ou mais servidores Linux imediatamente depois de gravar o arquivo no disco? O comando rsync não combina comigo, porque se eu definir rsync no cron, o tempo mínimo que eu posso definir é 1 minuto, mas eu preciso disso em tempo real.

    
por Sourav 31.08.2016 / 20:42

6 respostas

13

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

Leia mais sobre isso AQUI

    
por 31.08.2016 / 20:48
3

Inotify-tools

Forneça uma interface para inotify , consistindo em:

inotifywait

Esse comando simplesmente bloqueia os eventos de inotificação, 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 inteiras de diretório.

inotifywatch

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

    
por 22.06.2017 / 16:55
3

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

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

Hosts: Server1 e Server2

SO usado: 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 dois servidores e adicione ao arquivo authorized_keys . [adicione a chave pública de server1 a authorized_keys do server2 e a chave pública do server2 ao arquivo authorized_keys do server1]

Configuração do servidor1

Abra /etc/lsyncd.conf e 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 parâmetro target .

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

Agora crie o diretório de log.

# mkdir -p /var/log/lsyncd

Ative o serviço lsyncd para iniciar automaticamente.

# systemctl enable lsyncd.service

Iniciar o serviço.

# systemctl start lsyncd.service

Configuração do Servidor2

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

Agora a sincronização está definida.

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

Obrigado a MelBurslan por sua sugestão.

    
por 01.09.2016 / 12:43
2

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

    
por 31.08.2016 / 20:46
2

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

    
por 28.10.2017 / 13:42
1

"O SIOS Protection Suite para Linux" pode oferecer isso na AWS.

link

    
por 31.08.2016 / 20:55