Synchronisation à distance rsync (synchronisation de liaison descendante) + déploiement de la synchronisation en temps réel inotify

1. Présentation de rsync

Un outil de sauvegarde incrémentielle rapide

rsync (synchronisation à distance, synchronisation à distance)

  • Un outil de sauvegarde rapide open source
  • Synchronisation à distance, synchronisation à distance
  • Prise en charge de la réplication locale ou synchronisation avec d'autres hôtes SSH, rsync

Deux, source de synchronisation rsync

Dans la tâche de synchronisation à distance, le client chargé de lancer l'opération de synchronisation rsync est appelé l'initiateur et le serveur chargé de répondre à l'opération de synchronisation rsync à partir du client est appelé la source de synchronisation (source de sauvegarde). Pendant le processus de synchronisation, la source de synchronisation est chargée de fournir l'emplacement d'origine du fichier et l'initiateur doit avoir l'autorisation de lecture sur cet emplacement.
Exemple: le
serveur A synchronise les données du serveur B et le serveur B est la source de sauvegarde.
Inversement, le serveur B synchronise les données du serveur A, puis le serveur A est la source de sauvegarde.

Insérez la description de l'image ici

Troisièmement, configurez la source rsync

1. Idées de base

  • Créer le fichier de configuration rsyncd.conf et le fichier de compte indépendant
  • Activer rsync - mode démon

2. Fichier de configuration rsyncd.conf

  • Besoin d'être établi manuellement, la syntaxe est similaire à la configuration Samba
  • Authentification des utilisateurs d'authentification de configuration, fichier de secrets, s'il n'est pas ajouté, il sera anonyme

3. fichier de compte rsync

  • Adoptez le format d'enregistrement "nom d'utilisateur: mot de passe", un enregistrement d'utilisateur par ligne
  • Données de compte indépendantes, indépendantes du système de compte

4. Démarrez le service rsync

  • Fournir des services de manière indépendante via --daemon

  • Le service peut être arrêté en exécutant kill $ (cat /var/run/rsyncd.pid)

Quatre, commande rsync

基本格式:rsync [选项] 原始位置 目标位置
  • -r: mode récursif, incluant tous les fichiers du répertoire et des sous-répertoires.
  • -l: le fichier de lien symbolique est toujours copié en tant que fichier de lien symbolique.
  • -v: affiche des informations détaillées (détaillées) sur le processus de synchronisation.
  • -z: Compresser lors du transfert de fichiers (compresser).
  • -a: Mode d'archivage, conserve les autorisations de fichiers, les attributs et autres informations, ce qui équivaut à l'option combinée "-rlptgoD".
  • -p: Conserve la marque d'autorisation du fichier.
  • -t: Conserve l'horodatage du fichier.
  • -g: Conserve la marque de groupe du fichier (uniquement pour les super utilisateurs).
  • -o: Conserve la marque du propriétaire du fichier (uniquement pour les super utilisateurs).
  • -H: Conserve les fichiers liés en dur.
  • -A: Conserve les informations d'attribut ACL.
  • -D: Conserve les fichiers de périphérique et autres fichiers spéciaux.
  • --Supprimer: supprime les fichiers à l'emplacement cible mais pas à l'emplacement d'origine.
  • --Checksum: Décidez s'il faut ignorer les fichiers en fonction de la somme de contrôle (pas de la taille du fichier, de l'heure de modification).

La fonction de -delete est simplement de supprimer le fichier de différences et de conserver la cohérence

Cinq, deux méthodes d'expression de la source de configuration

Format 1:

用户名@主机地址::共享模块名
例如:
backuper@192.168.163.10::wwwroot /opt

Format 2:

rsync://用户名@主机地址/共享模块名
例如:
rsync://backuper@192.168.163.10/wwwroot /opt

Six, synchronisation en temps réel rsync

(1) Insuffisance de la synchronisation régulière

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

(2) Avantages de la synchronisation en temps réel

1. Une fois la source de synchronisation
modifiée, démarrez immédiatement la sauvegarde 2. Tant que la source de synchronisation ne change pas, la sauvegarde ne sera pas effectuée

Sept, inotify introduction

Inotify est une fonctionnalité du noyau Linux qui peutSurveiller les modifications du système de fichiers et répondre aux notifications, Logiciel auxiliaire: inotify-tools

Insérez la description de l'image ici
1. Ajustez les paramètres du noyau inotify (optimisation)

  • /etc/sysctl.conf (fichier de configuration des paramètres du noyau)
max_queue_events    	#监控事件队列大小
max_user_instances  	#最多监控实例数
max_user_watches    	#每个实例最多监控文件数  
配置的监控数量应该大于监控目标的总文件数

2. Utilisez l'outil auxiliaire inotify-tools

  • inotifywait: pour une surveillance continue, des résultats de sortie en temps réel
  • inotifywatch: utilisé pour la surveillance à court terme, affiche les résultats une fois la tâche terminée
例:
inotifywait -mrq -e modify,create,attrib,move,delete 文件或目录

#---------参数解释------------
-m	持续进行监控
-r	递归监控所有子对象
-q	简化输出信息
-e	指定要监控哪些事件类型
modify	修改
create	创建
attrib  属性更改
move	移动
deletc	删除

3. Ecrire des scripts de synchronisation

Idées d'écriture:
(1) Commencez par définir deux variables: surveiller et effectuer une sauvegarde
(2) Utiliser pendant et lire pour obtenir en permanence des résultats de surveillance
(3) Effectuer différentes opérations en fonction des résultats

vim /opt/inotify_rsynx.sh
#!/bin/bash
#定义两个变量:监控文件,执行备份
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete 需要监控的目录或文件"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/密码文件 刚才监控的目录或文件 用户名@主机地址::共享模块名"
 
 #while read获取监控结果
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do 
    #如果rsync没有运行,执行rsync进行备份操作
    if [ $(pgrep rsync | wc -l) -eq 0 ] ; then
        $RSYNC_CMD
	fi
done

Huit, configurer la synchronisation de la liaison descendante rsync

Synchronisation de la liaison descendante: sauvegarde des données du serveur maître sur le serveur esclave

inotify-tools-3.14.tar.gz

Héberger système opérateur IP Package d'installation requis, logiciel
Maître CentOS7 192.168.182.11 rsync
Trimer CentOS7 192.168.182.22 rsync / inotify-tools-3.14.tar.gz

Configuration de l'environnement

Maître (192.168.182.11)

1. Éteignez le pare-feu et installez le logiciel

systemctl stop firewalld.service 
setenforce 0
#检查是否安装,一般系统已默认安装rsync
rpm -q rsync
yum -y install rsync

2. Créez le fichier de configuration /etc/rsyncd.conf

  • Si la méthode anonyme est utilisée, supprimez simplement les éléments de configuration "auth users" et "secrets file" dans la configuration suivante.
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.163.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.163.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.test.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper lisi
secrets file = /etc/rsyncd_users.db
#---------配置解释----------------------------------------------
uid = root					     
gid = root					    
use chroot = yes					#禁锢在源目录
address = 192.168.163.10			#监听地址,监听本机地址
port 873						    #监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log		#日志文件位置
pid file = /var/run/rsyncd.pid		#存放进程 ID 的文件位置
hosts allow = 192.168.163.0/24		#允许同步的客户机网段
[wwwroot]					        #共享模块名称
path = /var/www/html				#源目录的实际路径(同步的目录)
comment = Document Root of www.test.com
read only = yes					    #是否为只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z  #同步时不再压缩的文件类型
auth users = kk			#授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db			      #存放账户信息的数据文件

Insérez la description de l'image ici

3. Créez un fichier de données pour le compte de sauvegarde

  • Pas besoin de créer un utilisateur système avec le même nom
vim /etc/rsyncd_users.db
lisi:123456

chmod 600 /etc/rsyncd_users.db

Insérez la description de l'image ici

4. Assurez-vous que tous les utilisateurs ont un accès en lecture au répertoire source / var / www / html (le répertoire de fichiers à sauvegarder)

yum -y install httpd

chmod +r /var/www/html
ls -ld /var/www/html

Insérez la description de l'image ici
5. Démarrez rsync

#启动 rsync 服务程序
rsync --daemon					#启动 rsync 服务,以独立监听服务的方式(守护进程)运行 

netstat -anpt | grep rsync

#关闭 rsync 服务的方法
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

Insérez la description de l'image ici
Insérez la description de l'image ici

vérification

Maître (192.168.1682.11)

cd /var/www/html/
vim 1.html

Insérez la description de l'image ici
Esclave (192.168.182.22)

rsync -az --delete --password-file=/etc/server.pass kk@192.168.182.11::wwwroot /opt/haha
ls haha

Insérez la description de l'image ici

Insérez la description de l'image ici
Il est impossible d'exécuter manuellement dans une entreprise et des tâches périodiques sont généralement utilisées

#设置周期性任务
crontab -e
0 2 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass lisi@192.168.163.10::wwwroot /opt/abc

systemctl restart crond
systemctl enable crond

Neuf, rsync + inotify synchronisation en temps réel

1 、 Maître (192.168.182.11)

vim /etc/rsyncd.conf
read only = no

kill `cat /var/run/rsyncd.pid`
netstat -natp | grep rsync

rsync --daemon
netstat -natp | grep rsync
 
chmod 777 /var/www/html

Insérez la description de l'image ici
Insérez la description de l'image ici

2 、 Esclave (192.168.182.22)

(1) Ajustez les paramètres du noyau inotify

  • max_queue_events (surveiller la file d'attente des événements, la valeur par défaut est 16384)
  • max_user_instances (nombre maximum d'instances de surveillance, la valeur par défaut est 128)
  • max_user_watches (le nombre maximum de fichiers surveillés par instance, la valeur par défaut est 8192)
  • 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.
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 

vim /etc/sysctl.conf 

fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

sysctl -p

Insérez la description de l'image ici

yum -y install gcc gcc-c++ 

#放入安装包
tar zxvf inotify-tools-3.14.tar.gz -C /opt
cd /opt	

cd /opt/inotify-tools-3.14/

./configure
make && make install

Insérez la description de l'image ici

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

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

cd /opt/
chmod +x inotify_rsync.sh
. /opt/inotify_rsync.sh &

#加入开机自动执行
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify_rsync.sh' >> /etc/rc.d/rc.local

Insérez la description de l'image ici

cd /opt/
chmod +x inotify.sh 
. /inotify.sh 

cd /opt/haha
touch ccc.html
rm -rf aaa.html

Insérez la description de l'image ici
Vérification du maître (192.168.182.11)

cd /var/www/html
ls

Insérez la description de l'image ici
Esclave (192.168.182.22)=

Esclave (192.168.184.20)
Maître (192.168.182.11)

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/panrenjun/article/details/114595246
conseillé
Classement