Synchronisation à distance rsync et serveur source rsync + outil de surveillance inotify pour obtenir une synchronisation en temps réel

Un, introduction à rsync

Remote Sync, synchronisation à distance, c'est un outil de sauvegarde incrémentielle rapide open source qui peut mettre en miroir et synchroniser toute l'arborescence de répertoires entre différents hôtes.
Prend en charge les sauvegardes incrémentielles, maintient les connexions et les autorisations et utilise des algorithmes de synchronisation optimisés pour effectuer la compression avant la transmission. Il convient donc parfaitement aux applications telles que les sauvegardes à distance et les serveurs miroir.
Prend en charge la réplication locale ou synchronise
rsync et scp FTP avec d'autres hôtes SSH, rsync, etc. L'avantage du mécanisme de sauvegarde de l'outil est que la sauvegarde synchrone rsync compare d'abord les données modifiées dans la copie, ce qui économise des ressources. Si 1T de données n'a que 1K de modifications de données, rsync n'a besoin que de synchroniser 1k de données alors que scp est un Copie stupide, toutes les copies.

1.1, mode de service rsync

1. Synchroniser par ssh

2. Mode C / S, rsync a un module démon côté serveur et un client rsync

1.2, le principe du service rsync

Dans la tâche de synchronisation à distance, le client responsable du lancement de l'opération de synchronisation rsync est appelé l'initiateur et le serveur responsable de l'opération de synchronisation rsync correspondante à partir du client est appelé la source de synchronisation.
Pendant le processus de synchronisation, la source de synchronisation est chargée de fournir l'emplacement d'origine du document et l'initiateur doit avoir l'autorisation de lecture sur cet emplacement.
Comme indiqué ci-dessous:
Insérez la description de l'image ici

rsync est un outil de sauvegarde incrémentielle rapide qui prend en charge:
(1) la réplication locale;
(2) la synchronisation avec un autre SSH;
(3) la synchronisation avec l'hôte rsync.

Plus tard, je montrerai comment utiliser l'outil de sauvegarde rsync à partir de ces trois aspects.

1.3 Opérations courantes de rsync

Insérez la description de l'image ici

1.4, l'idée de configurer rsync source

La configuration du serveur source rsync est à peu près divisée en trois étapes:
(1) créer un fichier de configuration rsync;
(2) créer un fichier de données pour le compte de sauvegarde;
(3) démarrer le service rsync.

Deux, construire le service rsync

Préparez deux machines virtuelles, une comme source de synchronisation et une pour que le client lance la synchronisation.

2.1, créer le fichier de configuration rsync

Serveur source de synchronisation:

[root@server-9~]# yum -y install httpd
//如果虚拟机是最小化安装,还需要rsync包安装。
[root@localhost ~]# yum -y install rsync

[root@server-9 ~]# vi /etc/rsyncd.conf               ####在同步源服务器上配置
uid = nobody
 gid = nobody
 use chroot = yes                            ####禁锢在源目录
 #address = XXXXXXXX                  ####监听地址
 port 873                                             ####监听端口号
 log file = /var/log/rsyncd.log            ####日志文件位置
 pid file = /var/run/rsyncd.pid            ####存放进程ID的文件位置
 hosts allow = 192.168.100.0/24          ####允许访问的客户机地址
[wwwroot]                                           ####共享模块名称
 path = /var/www/html                       ####源目录的实际路径
 comment = Document Root of www.51xit.top
 read only =yes                                   #####是否只读(手动同步为yes ,做自动同步需改为no)
 dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z             ####同步时不在压缩的文件类型
 auth users =backuper                               #####授权账户
 secrets file = /etc/rsyncd_users.db                                         ####存放账户信息的数据文件

Pour des raisons de sécurité, la source de synchronisation ne doit autoriser que la synchronisation en lecture seule. De plus, la synchronisation peut également être anonyme, tant que la configuration "fichier secrets" "utilisateurs auth" est mise en commentaire.

2.2. Créer un fichier de données pour le compte de sauvegarde

//创建rsync账号文件
采用“用户名:密码”的记录格式,每行一个用户记录,独立的账号数据,不依赖于系统账号
[root@server-9~]# vi /etc/rsyncd_users.db
backuper:pwd123

//由于账号信息采用明文存放,因此需要调整文件权限,避免账号信息泄露
[root@server-9 ~]# chmod 600 /etc/rsyncd_users.db 

2.3 Redémarrez le service rsync pour le rendre efficace

rsync --dameon 

//此处如果想要停止这个服务 ,有两个方式:
方式一:
[root@server-9 ~]# kill $(cat /var/run/rsyncd.pid)   #使用这个停止服务必须删除存放rsync服务进程的文件
[root@lserver-9 ~]# rm -rf /var/run/rsyncd.pid

方式二:直接使用“netstat -anpt | grep rsync”命令查出进程号,使用“kill 进程号”。

Trois tests de synchronisation rsync (trois méthodes)

3.1 Écrivez d'abord le fichier de test

[root@server-9 ~]# cd /var/www/html/
[root@server-9 html]# ls
[root@server-9 html]# echo "this is one" > /var/www/html/index.html
[root@server-9 html]# echo "this is web" > /var/www/html/web.html
[root@server-9 html]# ls
index.html  web.html

3.2 Exécuter les commandes de synchronisation des opérations sur d'autres nœuds

3.2.1 La première méthode de synchronisation

[root@SERVER 10 ~]# rsync -avz backuper@192.168.100.9::wwwroot /opt
Password:
receiving incremental file list
./
index.html
web.html

sent 65 bytes  received 199 bytes  40.62 bytes/sec
total size is 24  speedup is 0.09

3.2.2 La deuxième méthode de synchronisation

[root@SERVER 10 ~]# rsync -avz rsync://backuper@192.168.100.9/wwwroot /opt
Password:
receiving incremental file list

sent 20 bytes  received 90 bytes  12.94 bytes/sec
total size is 24  speedup is 0.22

3.2.3 La troisième méthode de synchronisation, sans interaction

[root@SERVER 10 opt]# rm -rf *.html

创建密码文件
[root@SERVER 10 opt]# vim server.pass

abc123
~
~增加权限
[root@SERVER 10 opt]# chmod 600 server.pass
[root@SERVER 10 opt]# rsync -az --delete --password-file=/opt/server.pass backuper@192.168.100.9::wwwroot /opt
查看同步情况,同步成功
[root@SERVER 10 opt]# ls
index.html  web.html

3.2.4, mettre en place une synchronisation régulière

[root@SERVER 10 wwwroot]# crontab -e   ####每天晚上10点半对服务器网站目录更新一次
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.100.41::wwwroot /opt/myweb/

[root@SERVER 10 wwwroot]# systemctl restart crond
[root@SERVER 10wwwroot]# systemctl enable crond

4. rsync + outil de surveillance inotify pour obtenir une synchronisation automatique

Introduction à la synchronisation en temps réel
1. La synchronisation périodique présente certaines lacunes, telles que:

L'heure d'exécution de la sauvegarde est fixe, le délai est évident et les performances en temps réel sont médiocres.
Lorsque la source de synchronisation ne change pas pendant une longue période, des tâches périodiques intensives sont inutiles.
2. Les avantages de la synchronisation en temps réel

Une fois la source de synchronisation
modifiée, démarrez immédiatement la sauvegarde Tant que la source de synchronisation ne change pas, la sauvegarde ne sera pas effectuée.
3. Introduction à inotify

À partir de 2.6.13, le noyau Linux a introduit le mécanisme inotify.
Il s'agit d'un mécanisme de notification de changement de système de fichiers, qui
peut surveiller les fichiers et les répertoires.
Lors de la surveillance d'un répertoire, il peut surveiller simultanément le répertoire et chaque sous-répertoire et fichier du répertoire.
Il peut aider rsync, surveiller les modifications de données et déclencher rsync pour synchroniser les données.
Insérez la description de l'image ici

4.1 Configurer sur le serveur

vim /etc/rsync.conf

uid = nobody
gid = nobody
port 873
log file = /var/log/rsyncd.log
# use chroot = yes
# max connections = 4
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.100.0/24
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[wwwroot]
path = /var/www/html
comment = www
read only = no                   (自动同步改NO   ,手动同步改为yes )
auth users = backuper
secrets file = /etc/rsyncd_users.db

4.2 Créer le texte du fichier de mot de passe

vim /etc/rsync_users.db

backuper:abc123

chmod 600 /etc/rsyncd_users.db  //设置权限

4.3 Redémarrer le service

 kill 16360
netstat -ntap | grep rsync
rsync --daemon
 netstat -ntap | grep rsync

Installez le dossier httpd, generate, var / www / html et accordez des autorisations

yum  install httpd -y 

 cd /var/www
chmod 777 html


ll
总用量 0
drwxr-xr-x 2 root root 6 42 21:14 cgi-bin
drwxrwxrwx 2 root root 6 42 21:14 html

4.4 Configurer inotify-tools côté nœud

4.4.1 Installer le logiciel de surveillance

tar -zxvf inotify-tools-3.14.tar.gz
yum install  make  gcc gcc-c++ httpd -y
cd 进入目录
./configure
make && make install

4.4.2 Configuration du fichier noyau

Lorsque le nombre de répertoires et de fichiers à surveiller est important ou que les changements sont fréquents, il est recommandé d'augmenter les valeurs de ces trois paramètres.
Vous pouvez directement modifier le fichier de configuration de /etc/sysctl.conf pour définir la file d'attente de gestion, le nombre d'instances et le nombre de surveillance.

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
 sysctl -p  // 立即生效

4.4.3 Créer un texte de mot de passe

vim /etc/server.pass
写入 abc123
[root@SERVER 10 /]# chmod 600 /etc/server.pass

4.4.4 Ajouter des autorisations au répertoire

[root@SERVER 10 /]# cd /var/www
[root@SERVER 10 www]# chmod 777 html

4.4.5 Test de surveillance

[root@SERVER 10 ~]# cd /var/www/html/
[root@SERVER 10 html]# touch abc
[root@SERVER 10 html]# rm -rf abc


[root@SERVER 10 www]# inotifywait -mrq -e create,delete,move,modify,attrib,move,delete /var/www/html/
/var/www/html/ CREATE abc
/var/www/html/ ATTRIB abc
/var/www/html/ DELETE abc

4.4.6 Créer des fichiers de script pour réaliser la synchronisation automatique de la surveillance

vim /opt/intoify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]::wwwroot/"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
#       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log

    fi
done

Augmenter l'autorité d'exécution et exécuter

chmod +x intoify.sh
./inotify.sh

4.4.7 Créer un fichier côté répertoire et l'afficher et le tester sur un autre côté serveur

[root@SERVER 10 html]# echo "this is test" > test.html
[root@SERVER 10 html]# echo "this is test" > test2.html
[root@SERVER 10 html]# echo "this is test3" > test3.html
[root@SERVER 10 html]#
[root@SERVER 10 opt]# ./inotify.sh
rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync: chgrp "/.test.html.CMUx1o" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test2.html.QsPEBC" (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 "/.test.html.WlvSvG" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test2.html.uKf5IU" (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 "/.test.html.T8HIwo" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test2.html.QPx7rz" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test3.html.ZmVwnK" (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 "/test3.html" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test.html.VG7wIt" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.test2.html.xuuoiF" (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]

4.4.8 Vérifiez le serveur et constatez que la synchronisation est réussie

[root@server-9 html]# ls
test2.html  test3.html  test.html
[root@server-9 html]# cat test3.html
this is test3

Je suppose que tu aimes

Origine blog.csdn.net/BIGmustang/article/details/108530452
conseillé
Classement