- 1. Introdução à sincronização rsync
- Dois, configure o servidor Rsync
-
- 1. Ideias básicas
- Passos experimentais
-
- [Configuração do servidor 1 (extremidade da fonte rsync)]
- 1. Modifique o arquivo de configuração rsync
- 2. Edite o arquivo de log do usuário e inicie o rsync
- 3. Crie um teste de arquivo no diretório compartilhado
- [Servidor 2 (Iniciador)]
- 1. Vá para o iniciador para testar e visualizar os arquivos no diretório / var / www / html
- 2. Execute a sincronização rsync com o servidor 1 (extremidade de origem)
- 3. Configure a interação livre
- 4. Você pode especificar tarefas agendadas periódicas e sincronizar regularmente
- Três, rsync + inotify sincronização em tempo real
-
- 1.rsync sincronização em tempo real
- 2. Sobre o inotify
- 3. Projeto experimental
- Rsync distribuído + inotify monitoramento em tempo real, sincronização em tempo real
-
- [Servidor 2 (lado da notificação)]
- 1. Modifique os parâmetros do kernel
- 2. Instale o software inotify
- 3. Teste de monitoramento
- 4. Configure o script de monitoramento
- 5. Ajuste as permissões do diretório compartilhado html para 777
- [Servidor 1 (fim de fonte rsync)]
- 2. Ajuste as permissões do diretório compartilhado html para 777
- 3. Feche o processo rsync para ter efeito
- verificação
1. Introdução à sincronização rsync
.Uma ferramenta de backup incremental rápida
- Sincronização remota, sincronização remota
- Suporta replicação local ou sincroniza com outros SSH, hosts rsync
- Site oficial: http://rsync.samba.org
1. Introdução de software
- Rsync é uma ferramenta de sincronização de dados remota que pode sincronizar rapidamente arquivos entre vários hosts via LAN / WAN.
- O Rsync era originalmente uma ferramenta para substituir o scp e atualmente é mantido por Rsync.samba.org.
- O Rsync usa o chamado "algoritmo Rsync" para sincronizar os arquivos entre os hosts locais e remotos. Este algoritmo apenas transfere as diferentes partes dos dois arquivos em vez de enviar o arquivo inteiro a cada vez, portanto a velocidade é bastante rápida.
- A máquina que executa o servidor Rsync também é chamada de servidor de backup. Um servidor Rsync pode fazer backup dos dados de vários clientes ao mesmo tempo; vários servidores Rsync também podem fazer backup dos dados de um cliente.
2. Princípio Rsync
- O Rsync pode usar o modo daemon. O servidor Rsync abrirá um canal de serviço (porta) 873 e aguardará a conexão Rsync.
- Ao conectar, o servidor Rsync verificará se a senha corresponde e, se a senha for verificada, a transferência do arquivo pode ser iniciada.
- Quando a primeira conexão for concluída, todo o documento será transmitido uma vez e, na próxima vez, apenas a diferença entre os dois documentos será transmitida.
Rsync suporta a maioria dos sistemas do tipo Unix. A instalação da interface gráfica CentOS7.0 basicamente instalou o software Rsync, que pode ser instalado com o yum
3. Os recursos básicos do Rsync são os seguintes:
- Toda a árvore de diretório e sistema de arquivos podem ser espelhados e salvos;
- É fácil manter as permissões do arquivo original, hora, links físicos e virtuais, etc .;
- Pode ser instalado sem permissão especial;
- Processo otimizado, alta eficiência de transferência de arquivos;
- Você pode usar rcp, ssh, etc. para transferir arquivos, é claro, você também pode usar uma conexão de soquete direta;
- Suporte a transmissão anônima.
4. Uso do comando rsync
Formato: rsync [Opções] Opções comuns para o local original e local de destino
Opções | usar |
---|---|
-uma | Modo de arquivo, recursivo e preserva os atributos do objeto, equivalente a -rlptgoD |
-V | Exibir informações detalhadas (verbosas) sobre o processo de sincronização |
-com | Compactar ao transferir arquivos (compactar) -H: Manter os arquivos com link físico |
-UMA | Manter as informações do atributo ACL |
-excluir | Exclua arquivos no local de destino, mas não no local original |
–Checksum | Decida se deseja pular arquivos com base na soma de verificação do objeto |
5. Duas maneiras de sincronizar a fonte
Formato 1: rsync [opções] nome de usuário @ endereço do host :: local de destino do nome do módulo compartilhado
Formato 2: rsync [opções] rsync: // nome de usuário @ endereço do host / local de destino do nome do módulo compartilhado
Dois, configure o servidor Rsync
Fonte de sincronização Rsync (refere-se ao servidor remoto da operação de backup, também conhecido como fonte de backup)
1. Ideias básicas
- Estabelecer o arquivo de configuração rsyncd.conf e o arquivo de conta independente
- Ativar modo rsync --daemon
A função do processo daemon é que, mesmo se o serviço não solicitar o serviço, o número da porta do serviço ainda estará aberto.
Exemplo de aplicação - Backup do usuário, permitindo a sincronização de downlink
- O diretório operacional é / var / www / html /
Passos experimentais
- Arquivo de configuração /etc/rsyncd.conf
- Configurar arquivo de conta rsync
- Iniciar serviço rsync
- Verifique para outro servidor
[Configuração do servidor 1 (extremidade da fonte rsync)]
1. Modifique o arquivo de configuração rsync
[root@oracle ~]# vi /etc/rsyncd.conf
uid = nobody ##主账号为匿名
gid = nobody ##组账号匿名
use chroot = yes ##家目录锁定,锁定家目录后无法使用cd命令进入其他目录
address = 192.168.10.10 ##本地rsync源端地址
max connections = 4 ##最大连接数为4
pid file = /var/run/rsyncd.pid ##pid文件位置
log file = /var/log/rsyncd.log ##日志文件位置
port = 873 ##监听端口873
hosts allow = 192.168.10.0/24 ##允许访问的网段
[wwwroot] ##共享模块的名称
path = /var/www/html ##共享目录
comment = ww.bai.com ##描述信息,自定义
read only = yes ##只读模式
auth users = backuper ##授权的虚拟用户为backuper(不需要系统创建)
secrets file = /etc/rsyncd_user.db ##认证密码存放文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 ##不进行压缩的文件格式类型
2. Edite o arquivo de log do usuário e inicie o rsync
[root@oracle ~]# vi /etc/rsyncd_user.db ##编写用户数据文件
backuper:abc123 ##每一行为一个用户记录,格式为——用户名:密码
[root@oracle ~]# chmod 600 /etc/rsyncd_user.db ## 600权限,不允许其他用户读取
[root@oracle ~]# rsync --daemon ##启动守护进程
[root@oracle ~]# netstat -anupt |grep 873 ##查看端口状态
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 12109/rsync
tcp6 0 0 :::873 :::* LISTEN 12109/rsync
3. Crie um teste de arquivo no diretório compartilhado
[root@oracle html]# vi abc
abc
[root@oracle html]# cat abc
this abc
[Servidor 2 (Iniciador)]
1. Vá para o iniciador para testar e visualizar os arquivos no diretório / var / www / html
[root@squid ~]# cd /var/www/html
[root@squid html]# ls ##查看不到文件,为空
[root@squid html]#
2. Execute a sincronização rsync com o servidor 1 (extremidade de origem)
[root@squid html]# rsync -avz rsync://backuper@192.168.10.10/wwwroot /var/www/html
##rsync -avz backuper@192.168.10.10::wwwroot /var/www/html ###该命令效果一样
Password: ##输入密码
receiving incremental file list
./
abc
sent 46 bytes received 118 bytes 36.44 bytes/sec
total size is 9 speedup is 0.05
[root@squid html]# ls ##在此查看,发现源端的文件同步到发起端了
abc
3. Configure a interação livre
[root@squid html]# rm -rf abc ##先删除abc文件,方便测试
[root@squid html]# ls
[root@squid html]#
[root@squid html]# vi /etc/server.password ##编写免交互密码存放文件
abc123 ##写入rsync指定的虚拟用户backuper的密码
[root@squid html]# chmod 600 /etc/server.password ##同样设置600权限,只允许主人查看
[root@squid html]# vi /etc/server.password
[root@squid html]# rsync -az --delete --password-file=/etc/server.password backuper@192.168.10.10::wwwroot /var/www/html ##免交互同步,--delete会删除本端与源端文件名不相同的文件,--password-file指定存放密码的文件位置
[root@squid html]# ls
abc
[root@squid html]# cat abc ##同步成功
this abc
4. Você pode especificar tarefas agendadas periódicas e sincronizar regularmente
[root@oracle ~]# crontab -e ##设置每晚10点执行同步
*/30 22 * * * rsync -az --delete --password-file=/etc/server.password backuper@192.168.10.10::wwwroot /var/www/html
[root@oracle ~]# crontab -l
*/30 22 * * * rsync -az --delete --password-file=/etc/server.password backuper@192.168.10.10::wwwroot /var/www/html
Três, rsync + inotify sincronização em tempo real
Contar apenas com o rsync combinado com tarefas agendadas periódicas tem grandes limitações e não pode ser atualizado em tempo real, então o inotify foi criado para resolver esse gargalo.
1.rsync sincronização em tempo real
- Insuficiência da sincronização regular
◆ O tempo para realizar o backup é fixo, o atraso é óbvio e o desempenho em tempo real é ruim
◆ Quando a fonte de sincronização não muda por um longo tempo, tarefas regulares intensas são desnecessárias - Vantagens da sincronização em tempo real
◆ Assim que a fonte de sincronização mudar, inicie imediatamente o backup
◆ Desde que a fonte de sincronização não mude, nenhum backup será executado
2. Sobre o inotify
- O mecanismo inotify do kernel do Linux
◆ Disponível a partir da versão 2.6.13
◆ Ele pode monitorar as mudanças do sistema de arquivos e fazer notificações
◆ Software auxiliar de resposta: ferramentas inotify
3. Projeto experimental
Instalar ferramentas auxiliares do inotify-tools
inotifywait: para monitoramento contínuo, resultados de saída em tempo real
inotifywatch: para monitoramento de curto prazo, os resultados serão produzidos após a tarefa ser concluída
Dois servidores são necessários: servidor 1 (extremidade de origem rsync), servidor 2 (extremidade de inotify)
- Ajuste os parâmetros do kernel exigidos pelo inotify
- Instale o software inotify
- Modifique os parâmetros do arquivo de configuração no lado do servidor rsync 1 no experimento acima: somente leitura = não
- Ajuste as permissões do diretório compartilhado html entre os dois servidores para 777
- Use comandos integrados do inotify para testar
- Editar script de monitoramento em tempo real
- Verifique a disponibilidade do script
Rsync distribuído + inotify monitoramento em tempo real, sincronização em tempo real
[Servidor 2 (lado da notificação)]
1. Modifique os parâmetros do kernel
[root@oracle ~]# vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@oracle ~]# sysctl -p ##生效
fs.inotify.max_queued_events = 16384 ##监控事件的队列大小
fs.inotify.max_user_instances = 1024 ##监控的最大实例数
fs.inotify.max_user_watches = 1048576 ##每个实例被监控的最大文件数
2. Instale o software inotify
[root@oracle ~]# ls ##查看inotify软件包
inotify-tools-3.14.tar.gz
[root@oracle inotify-tools-3.14]# yum -y install gcc gcc-c++ make ##安装环境
[root@oracle ~]# tar zxvf inotify-tools-3.14.tar.gz -C /opt/ ##解压软件包
[root@oracle ~]# cd /opt/inotify-tools-3.14/
[root@oracle inotify-tools-3.14]# ./configure ##直接配置
[root@oracle inotify-tools-3.14]# make && make install ##安装软件
[root@oracle ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html & ##后台执行监控
3. Teste de monitoramento
[root@oracle ~]# cd /var/www/html ##进入html目录创建文件
[root@oracle html]# touch test.txt ##创建文件
[root@oracle ~]#
/var/www/html/ CREATE test.txt ##这里后台会有监控提示,创建了test.txt文件
[root@oracle html]# rm -rf test.txt ## 删除test.txt文件
[root@oracle ~]#
/var/www/html/ CREATE test.txt
/var/www/html/ DELETE test.txt ##后台出现新的提示,删除了test.txt文件
4. Configure o script de monitoramento
[root@oracle opt]# vim /opt/inotify.sh ##编写监控脚本
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html/"
RSYNC_CMD="rsync -az --delete --password-file=/etc/server.password /var/www/html/ [email protected]::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ]
then
$RSYNC_CMD
fi
done
5. Ajuste as permissões do diretório compartilhado html para 777
[root@oracle opt]# chmod +x inotify.sh ##给执行权限
[root@oracle opt]# chmod 777 /var/www/html/ ##给/var/www/html最高权限,可供读写
[root@oracle opt]# ll /var/www/
total 0
drwxrwxrwx. 2 root root 17 Oct 23 22:13 html
[Servidor 1 (fim de fonte rsync)]
### 1.修改/etc/rsyncd.conf中[wwwroot]共享模块配置
[root@oracle opt]# vi /etc/rsyncd.conf
……省略部分
[wwwroot]
path = /var/www/html
comment = ww.bai.com
read only = no ##将这里的yes改为no,需要能写
……省略部分
2. Ajuste as permissões do diretório compartilhado html para 777
[root@squid html]# chmod 777 /var/www/html ##同样给与最高权限
[root@squid html]# ll /var/www/
drwxrwxrwx 2 root root 17 Oct 23 19:16 html
3. Feche o processo rsync para ter efeito
[root@oracle ~]# netstat -anupt |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 12109/rsync
[root@oracle ~]# pkill -9 rsync ##关闭进程,重启生效
[root@oracle ~]# netstat -anupt |grep rsync ##进程关闭了
[root@oracle ~]# rsync --daemon ##启动守护进程
error:failed to create pid file /var/run/rsyncd.pid: File exists ##会提示报错,pid文件存在
[root@oracle ~]# rm -rf /var/run/rsyncd.pid ##删除pid文件即可
[root@oracle ~]# rsync --daemon ##再次启动守护进程
verificação
1. Primeiro, insira arquivos diferentes no diretório compartilhado dos dois servidores, causando um fenômeno que não é sincronizado
[Servidor 1 (fim de fonte rsync)]
[root@oracle ~]# cd /var/www/html/
[root@oracle html]# touch test.txt
[root@oracle html]# ls
test.txt
[root@oracle html]#
[Servidor 2 (lado da notificação)]
[root@squid ~]# cd /var/www/html/
[root@squid html]# touch abc.txt
[root@squid html]# ls
abc.txt
[root@squid html]#
Os arquivos nos diretórios compartilhados dos dois servidores são inconsistentes
2. Execute o script para verificar
[Servidor 2 (lado da notificação)]
[root@squid opt]# ./inotify.sh & ##后台运行脚本
[1] 10901
[root@squid opt]# cd /var/www/html/
[root@squid html]# touch 123.txt ##在共享目录中添加新的文件
[root@squid html]# rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync: chgrp "/.123.txt.BUNMxZ" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.abc.txt.cVZqbR" (in wwwroot) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync: chgrp "/.123.txt.wa4qcd" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.abc.txt.33vNF5" (in wwwroot) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
###注意,这里的failed提示并不是同步失败,而是因为rsync服务器那一端修改了read only = no的参数,rsync程序默认是yes,因此会提示失败,实际上并不影响
[Servidor 1 (fim de fonte rsync)]
[root@oracle html]# ls ##原本的test.txt文件被删除,新增了inotify端的文件,完全一致状态
123.txt abc.txt