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
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.
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
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.
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]
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
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.
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.
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.
"O SIOS Protection Suite para Linux" pode oferecer isso na AWS.
Tags files linux synchronization