synchronisation à distance rsync + inotify

1. Introduction de base au service Rsync

1. À propos de rsync

  • Un outil de sauvegarde incrémentielle
  • Synchronisation à distance, synchronisation à distance
  • Prise en charge de la réplication locale ou synchronisation avec d'autres hôtes SSH, rsync
  • Site officiel: http://rsync.samba.org

Deux, configurer la source de sauvegarde rsync

2.1 Configurer le serveur source rsync

source de synchronisation rsync

  • Le serveur distant pour l'opération de sauvegarde, également appelé source de sauvegarde

2.2 Configurer la source rsync

L'idée de base

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

Exemple d'application

  • Sauvegarde des utilisateurs, permettant la synchronisation de la liaison descendante
  • Le répertoire d'exploitation est / var / www / html (installer HTTP)

Fichier de configuration rsyncd.conf

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

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 compte système

Activer le service rsync

  • Fournir des services seuls via --daemin

Troisièmement, l'utilisation de base de la commande rsync

3.1 Utiliser l'outil de sauvegarde rsync

format rsync:

  • rsync [options] emplacement cible d'origine

Options courantes:

  • -a: mode d'archivage, récursif et préserver les attributs des objets
  • -v: affiche des informations détaillées sur le processus de synchronisation
  • -z: compresser lors du transfert de fichiers
  • -H conserver les fichiers de lien dur
  • -A: conserver les informations d'attribut ACL
  • -Supprimer: supprimer les fichiers à l'emplacement cible mais pas à l'emplacement d'origine
  • --Checksum: Détermine s'il faut ignorer le fichier en fonction de la somme de contrôle de l'objet

Deux méthodes de représentation de la source de configuration Format:
Format 1: Nom d'utilisateur @ Adresse hôte :: Nom du module partagé

[root@localhost etc]# rsync backuper@192.168.1.10::wwwroot /opt/

Format 2: rsync: // nom d'utilisateur @ adresse hôte / nom du module partagé

[root@localhost etc]#  rsync -avz rsync://backuper@192.168.1.10::wwwroot /opt/

Quatre, exemple d'opération de sauvegarde rsync

源地址:192.168.1.10

同步目录:/var/www/html

客户端地址:192.168.1.11

4.1 Configuration de la station source rsync

1. Déterminez si rsync est installé

[root@server1 ~]# rpm -qa rsync
rsync-3.0.9-18.el7.x86_64

2. Modifiez le fichier de configuration

uid = nobody
gid = nobody
use chroot = yes             #禁锢家目录
address = 192.168.1.10       #提供同步服务的地址     
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.1.0/24     #允许同步的网段      

[wwwroot]
path = /var/www/html     #同步的目录
comment = www.lcx.com   #描述信息
read only = yes      #只读模式开启
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  #这些结尾的文件同步时不再压缩
auth users = backuper      #指定来访用户
secrets file = /etc/rsyncd_users.db      #用户密码存放在secrets file中

Insérez la description de l'image ici
3. Créez un fichier de mot de passe pour l'utilisateur de sauvegarde

[root@server1 ~]# vi /etc/rsyncd_users.db
backuper:123456

4. Le fichier de mots de passe sur le serveur nécessite 600 autorisations

[root@server1 ~]# chmod 600 /etc/rsyncd_users.db 

5. Démarrez le service pour afficher l'état

[root@server1 ~]# rsync --daemon   #启动rsync守护进程
[root@server1 ~]# netstat -anpt | grep rsync
tcp        0      0 192.168.1.10:873        0.0.0.0:*               LISTEN      8108/rsync          
[root@server1 ~]# yum -y install httpd   #安装apache
[root@server1 ~]# cd /var/www/html/ #此时会创建这个目录

[root@server1 html]# vi index.html
<h1>This is web</h1>

[root@server1 html]# cd ../
[root@server1 www]# chmod 777 html/ #给/var/www/html所有权限

4.2 Vérification du client

Options courantes:

  • -r: mode récursif, incluant tous les fichiers du répertoire et des sous-répertoires
  • -l: pour les fichiers de liens symboliques, ils sont toujours copiés en tant que fichiers de liens symboliques
  • -v: affiche des informations détaillées sur le processus de synchronisation
  • -a: Mode d'archivage, conserver les autorisations de fichier, les attributs et autres informations, ce qui équivaut à l'option combinée "-rlptgoD"
  • -z: compresser lors du transfert de fichiers
  • -p: conserve l'indicateur d'autorisation du fichier
  • -t: conserver l'horodatage du fichier
  • -g: conserver la marque de groupe du fichier (uniquement pour les super utilisateurs)
  • -o: Conserve l'indicateur de propriétaire du fichier (uniquement pour les super utilisateurs)
  • -H: conserver les fichiers de lien dur
  • -A: conserver les informations d'attribut ACL
  • -D: conserver les fichiers de l'appareil et autres fichiers spéciaux

première méthode:

[root@server1 ~]# yum -y install httpd
[root@server1 ~]# cd /var/www/
[root@server1 www]# chmod 777 html/
[root@server1 www]# rsync -avz backuper@192.168.1.10::wwwroot /var/www/html/
Password: 
receiving incremental file list

sent 61 bytes  received 113 bytes  20.47 bytes/sec
total size is 22  speedup is 0.13

Deuxième méthode,

[root@server1 www]# rsync -avz rsync://backuper@192.168.1.10/wwwroot /var/www/html/
Password: 
receiving incremental file list

sent 61 bytes  received 113 bytes  49.71 bytes/sec
total size is 22  speedup is 0.13

Synchroniser les fichiers en mode sans secret:
créez d'abord un fichier de mot de passe /etc/server.pass localement sur le client

[root@server1 ~]# vi /etc/server.pass
123456
[root@server1 ~]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.1.10::wwwroot /var/www/html

Cinq, synchronisation en temps réel rsync

5.1 Pourquoi la synchronisation en temps réel

Le manque de synchronisation régulière

  • Le temps pour effectuer 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

Avantages de la synchronisation en temps réel

  • Une fois la source de synchronisation modifiée, démarrez immédiatement la sauvegarde
  • Tant qu'il n'y a pas de changement dans la source de synchronisation, aucune sauvegarde n'est effectuée

5.2 À propos d'inotify

  • Mécanisme inotify du noyau Linux
  • Disponible à partir de la version 2.6.13
  • Peut surveiller les changements dans le système de fichiers et faire des notifications et des réponses
  • Logiciel auxiliaire: inotify-tools

5.3 rsync + inotify synchronisation en temps réel

Le client ajuste les paramètres du noyau inotify

[root@server2 ~]# vim /etc/sysctl.conf 
fs.inotify.max_queued_events = 16384  ###监控事件队列大小
fs.inotify.max_user_instances = 1024  ###最多监控实例数
fs.inotify.max_user_watches = 1048576  ###每个实例最多监控文件数

[root@server2 ~]# sysctl -p #刷新生效
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

Fichier de configuration de modification du site source

[root@server1 ~]# vi /etc/rsyncd.conf 
添加写的权限:
read only = no

Installer inotify-tools sur le client

[root@server2 ~]# yum -y install gcc gcc-c++ make #安装编译环境
[root@server2 ~]# tar zxvf inotify-tools-3.14.tar.gz 
[root@server2 ~]# cd inotify-tools-3.14/
[root@server2 inotify-tools-3.14]# ./configure 
[root@server2 inotify-tools-3.14]# make && make install
[root@server2 inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html #开启监控

#
-m持续监控、r递归、-q简要型输出,-e操作(更新),modify(修改),create(更新),move(移动),delete(删除),/var/www/html(监控地址)
此时监控台不可操作,可以通过远程登录多开页面进行操作
#

La deuxième page du client

[root@server2 html]# cd /var/www/html/
[root@server2 html]# touch abc
[root@server2 html]# rm -rf abc

Client

[root@server2 inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
/var/www/html/ CREATE abc #显示刚才操作
/var/www/html/ DELETE abc #显示刚才操作

Ecrire un script sur le client pour combiner la surveillance inotify et la synchronisation à distance rsync

[root@server2 ~]# vi inotify.sh
#!/bin/bash
INOTIFY="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC="rsync -avz --delete --password-file=/etc/server.pass /var/www/html [email protected]::wwwroot/" #本地路径在前为源与本地同步
$INOTIFY | while read DIRECTORY EVENT FILE   #逐条读取监控记录
do
        if [ $(pgrep rsync | wc -l) -le 0 ];then
            $RSYNC
        fi
done

Les autorisations de répertoire des deux côtés de la synchronisation sont 777
sources de synchronisation

[root@server1 ~]# chmod 777 /var/www/html/ 添加权限
[root@server1 ~]# ls -lh /var/www
总用量 352K
drwxr-xr-x. 2 root root    6 102 00:52 cgi-bin
drwxrwxrwx. 3 root root   47 1230 23:27 html

Client

[root@server1 ~]# ls -lh /var/www/
drwxr-xr-x. 2 root root  6 84 2017 cgi-bin
drwxrwxrwx. 2 root root 57 1230 23:35 html

Exécutez le script, créez un fichier dans le répertoire client / var / www / html et vérifiez si le répertoire source / var / www / html est synchronisé avec le
client

[root@server2 ~]# cd /var/www/html/
[root@server2 html]# echo '<h1>This is web</h1>' > index.html

Suivi client

[root@server2 ~]# ./inotify.sh 
sending incremental file list
html/
html/index.html

sent 120 bytes  received 31 bytes  302.00 bytes/sec
total size is 22  speedup is 0.15
sending incremental file list

sent 58 bytes  received 9 bytes  134.00 bytes/sec
total size is 22  speedup is 0.33

Station source

[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
abc  html  index.html
[root@server1 html]# cd html/
[root@server1 html]# ls
index.html
[root@server1 html]# cat index.html 
<h1>This is web</h1>

Je suppose que tu aimes

Origine blog.csdn.net/F2001523/article/details/112169205
conseillé
Classement