Répertoire d'articles
-
- 1. Présentation de rsync
- Deux, source de synchronisation rsync
- Troisièmement, configurez la source rsync
- Quatre, commande rsync
- Cinq, deux méthodes d'expression de la source de configuration
- Six, synchronisation en temps réel rsync
- Sept, inotify introduction
- Huit, configurer la synchronisation de la liaison descendante rsync
- Neuf, rsync + inotify synchronisation en temps réel
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.
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
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
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 #存放账户信息的数据文件
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
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
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
vérification
Maître (192.168.1682.11)
cd /var/www/html/
vim 1.html
Esclave (192.168.182.22)
rsync -az --delete --password-file=/etc/server.pass kk@192.168.182.11::wwwroot /opt/haha
ls haha
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
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
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
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
cd /opt/
chmod +x inotify.sh
. /inotify.sh
cd /opt/haha
touch ccc.html
rm -rf aaa.html
Vérification du maître (192.168.182.11)
cd /var/www/html
ls
Esclave (192.168.182.22)=
Maître (192.168.182.11)