l'architecture du système Linux ----- rsync outil de synchronisation à distance

annuaire

 

A .rsync Vue d'ensemble

commande de fonctionnement Deux spécifiques .rsync

L'analyse syntaxique du fichier de configuration de trois

IV. Œuvres démon rsync Tourné

V. avec des outils inotify pour obtenir une transmission déclenchée


A .rsync Vue d'ensemble

  • r données de synchronisation (à distance) des logiciels de mise en miroir sous Unix et plates-formes UNIX, il ne sont pas nécessaires en tant que sauvegarde complète ftp, sauvegarde différentielle peut être effectuée en fonction des données de variation de rsync, réduisant ainsi le trafic de données pour améliorer l'efficacité
  • rsync peut être local ou à distance pour réaliser une sauvegarde incrémentale. synchronisation de fichiers rsync peut être mis en œuvre sur l'hôte local et l'hôte distant (local ou distant pour pousser, tirer en mode deux de synchronisation locale à distance) peut être réalisé à différents chemins locaux (un répertoire différent, entre les partitions) fichier de synchronisation, mais pas chemin d'un chemin d'accès à distance synchrone à distance (SCP peut être réalisé) entre deux
  • rsync avec les tâches planifiées, vous pouvez réaliser une synchronisation ou la synchronisation du cycle
  • configuration rsync inotify ou sersync, peut atteindre déclencheur de synchronisation en temps réel
  • Ceci est la rsync interface site officiel

  • rsync divisé en trois profils: tsyncd.conf (profil principal); rsync.secrets (fichier de mot de passe); fichier rsyncd.motd (informations sur le serveur de fichiers)
  • rsync présente les caractéristiques suivantes:

1. Le miroir peut sauver un arbre de répertoire entier et le système de fichiers

2. Vous pouvez facilement conserver les autorisations de fichier d'origine du temps, des liens souples et rigides, etc., peut être installé sans autorisation spéciale

3. Le rendement élevé, la première rsync de synchronisation copie le contenu, mais la transmission suivante uniquement les fichiers modifiés, la compression rsync et le fonctionnement de décompression peuvent être effectués au cours de la transmission de données, d'utiliser moins de bande passante

4. sûr, le soutien rsync transports anonyme, afin de faciliter la mise en miroir du site, peut être utilisé lors de la transmission des données ssh de transport crypté

Remarque: le système rsync système en est sans installation supplémentaire, mais si vous utilisez pour minimiser l'installation, vous pouvez utiliser yum install -y rsync installer.

5. Soutenir la limite de vitesse, support pour HTTP

  • motif de synchronisation rsync composé de deux parties, le mode d'inspection (décider quels fichiers ont besoin de synchronisation) et motif de synchronisation (fichiers de synchronisation)

(1) Vérifiez le profil est conforme à la règle spécifiée pour vérifier quels fichiers doivent être synchronisés, tels que les fichiers ne sont pas transmis explicitement exclus. Par défaut, rsync en utilisant l'algorithme « vérification rapide » pour vérifier rapidement la taille du fichier source et le fichier cible, mtime (date de modification) si, et pas besoin alors transférer. Bien sûr, peut être modifié par une vérification rapide du mode d'inspection rsync préciser certaines options dans la ligne de commande, comme « --size seule option » représente un « contrôle rapide » que vérifie la taille du fichier du fichier en tant que fichier différent à transmettre. rsync supporte un grand nombre d'options, motif de vérification personnalisé est très élastique.

(2) Le mode de synchronisation se réfère au fichier est déterminé pour être synchronisé, ce travail supplémentaire à faire avant que le processus de synchronisation se produit. Par exemple, si le mentionné ci-dessus d'abord supprimer le fichier cible sur l'hôte source n'a pas, mais certains fichiers sur l'hôte cible, que ce soit la première sauvegarde existe déjà, ou non de suivre les liens et d'autres opérations de fichiers supplémentaires. rsync offre également beaucoup d'options pour faire des modèles de synchronisation deviennent plus flexibles.

Relativement parlant, le mode de synchronisation spécifié pour une partie de l'option manuelle rsync plus commune, seul le mode de contrôle spécifié uniquement quand il y a des besoins spéciaux, parce que la plupart des options de mode de contrôle sont susceptibles d'affecter la performance de rsync.

  • Trois modes de rsync

(1). Synchroniser le système de fichiers local. format de syntaxe de ligne de commande segment « Local ».

 Local: rsync [OPTION ...] SRC ... [DEST] 

(2) un hôte local et un hôte distant en utilisant la communication à distance de la coquille, la syntaxe de la commande est

Accès via le shell à distance:
Pull: rsync [OPTION ...] [USER @] HOST: SRC ... [DEST]
Push: rsync [OPTION ...] SRC ... [USER @] HOST: DEST 

(3) l'hôte local est connecté démon rsync sur l'hôte distant par l'intermédiaire d'une prise de réseau, la syntaxe de la commande est:

Accès via rsync daemon: 
Pull: rsync [OPTION ...] [USER @] HOST :: SRC ... [DEST]
rsync [OPTION ...] rsync: // [USER @] HOST [: PORT] / SRC ... [DEST]
push: rsync [OPTION ...] SRC ... [USER @] HOST :: DEST
rsync [OPTION ...] SRC ... rsync: // [USER @] HOST [: PORT ] / DEST 

commande de fonctionnement Deux spécifiques .rsync

copie locale

  • Format: rsync [options] position cible d'origine
常用选项有:
-a    //归档模式,递归保留对象属性,等同于 -rlptgoD
-v    //显示像详细信息
-z    //在传输文件时进行压缩
-H    //保留硬链接文件
-A    //保留ACL属性
-t    //暴露修改时间属性
-p    //保留文件权限属性
-g    //保留文件所属组属性
--progress    //显示数据传输的进度信息
--password-file=FILE    //指定密码文件,将密码写入文件,实现免交互数据库同步,需要修改权限,使用这个选项需要开启rsync daemon模式
--delete    //删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步中经常加上这个参数
--list-only    //仅列出服务器模板列表,需要rsync服务器设置list=true
--checksum    //根据对象的校验和来决定是否跳过文件
  • Exemples
[root@192 ~]# ls
1.txt                                initial-setup-ks.cfg  视频  下载
anaconda-ks.cfg                      公共                  图片  音乐
harbor-offline-installer-v1.2.2.tgz  模板                  文档  桌面
[root@192 ~]# rsync -avz harbor-offline-installer-v1.2.2.tgz /opt    //保留文件属性、压缩、详细信息等
sending incremental file list
harbor-offline-installer-v1.2.2.tgz

sent 533945011 bytes  received 31 bytes  71192672.27 bytes/sec
total size is 533765727  speedup is 1.00
[root@192 ~]# cd /opt
[root@192 opt]# ls
harbor-offline-installer-v1.2.2.tgz  rh

Copier via le shell distant

  • Des exemples de formats de données et téléchargements
rsync [选项] [user@a]HOST:SRC...[DEST]     #不加user@表示用root用户进行登陆远程主机下载数据到 本地的DEST路径

##client为
[root@client ~]# echo "123" > 1.txt
[root@client ~]# ls
1.txt            initial-setup-ks.cfg  模板  图片  下载  桌面
anaconda-ks.cfg  公共                  视频  文档  音乐
[root@client ~]# 


##从client上下载数据
[root@server ~]# rsync -avz [email protected]:1.txt /root/
[email protected]'s password: 
receiving incremental file list
1.txt

sent 36 bytes  received 72 bytes  30.86 bytes/sec
total size is 4  speedup is 0.04
[root@server ~]# ls
1.txt                                initial-setup-ks.cfg  视频  下载
anaconda-ks.cfg                      公共                  图片  音乐
harbor-offline-installer-v1.2.2.tgz  模板                  文档  桌面
[root@server ~]#
  • Les formats de données et des exemples de téléchargement
##格式为:
上传数据:rsync[选项] SRC...[user@]HOST:DEST   #这里的SRC表示本地数据,DEST表示远端主机目录


##实例如下:
[root@server ~]# rsync -avz --progress harbor-offline-installer-v1.2.2.tgz [email protected]:/root/
[email protected]'s password: 
sending incremental file list
harbor-offline-installer-v1.2.2.tgz
   533765727 100%   50.62MB/s    0:00:10 (xfer#1, to-check=0/1)

sent 533945011 bytes  received 31 bytes  39551484.59 bytes/sec
total size is 533765727  speedup is 1.00
[root@server ~]# 

--progress显示进度条

Copier par processus rsync

  • Télécharger le format de données
rsync [选项] [user@] HOST::SRC...[DEST] #这里双冒号后的SRC表示远端服务器端的模块名
rsync [选项] rsync://[user@]HOST[:port]/src...[DEST] #这里的SRC表示实际的同步目录名,可以指定端口
  • Télécharger le format des données
rsync [选项] SRC...[user]@HOST::DEST #上传本地客户端数据到远端服务端的DEST模块名指定的路径
rsync [选项] SRC...rsync://@HOST[:port]/DEST

 

L'analyse syntaxique du fichier de configuration de trois

  • Rsync.conf profils sont configurés par une pluralité de modules et la composition globale de la configuration,
  • syntaxe du fichier de configuration est:
模块以 [模块名] 开始

参数配置行的格式是 name = value ,其中 value 可以有两种数据类型:

字符串(可以不用引号定界字符串)

布尔值(1/0 或 yes/no 或 true/false)

以 # 或 ; 开始的行为注释

\ 为续行符
  • Toutes les lignes sont paramètres de configuration globale [Module1] autre que, bien sûr, également possible, au cas où la valeur du paramètre est un paramètre global du module de paramètre, il fait partie du fichier de définition dans les valeurs par défaut pour tous les modules.
  • Les principaux paramètres des modules utilisés pour définir le serveur rsync répertoires à synchroniser. Format déclaration du module doit être [module] forme, le nom est client rsync pour voir le nom. Similaire au nom de partage serveur Samba. Le serveur de données est synchronisé par le chemin réel pour spécifier, en fonction de leurs propres besoins, pour spécifier plusieurs modules
  • rsync autorisations de fichiers de mot de passe d'authentification doit être 600, sinon le client ne peut pas le serveur de connexion
  • rsync fichier de mot de passe d'authentification dans chaque ligne spécifier un nom d'utilisateur: mot de passe paires dans le format: nom d'utilisateur: passwd
vim /etc/rsyncd.conf

motd file = /etc/rsyncd.motd    #设置服务器信息提示文件,在该文件中编写提示信息

transfer logging = yes    #开启rsync数据传输日志功能

log file = /var/log/rsyncd.log    #设置日志文件名,可通过log format参数设置日志格式

pid file = /var/run/rsyncd.log    #设置rsync进程号保存文件名称

lock file = /var/run/rsync.lock    #设置锁文件名称

port = 873    #设置服务器监听的端口号,默认是873

address = 192.168.0.230    #设置本服务器所监听网卡接口的ip地址

uid = nobody    #设置进行数据传输时所使用的帐户名或ID号,默认使用nobody

gid = nobody    #设置进行数据传输时所使用的组名或GID号,默认使用nobody

#若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。

use chroot = no 

read only = yes    #是否允许客户端上传数据,yes表示不允许

max connections =10    #设置并发连接数,0表示无限制

[common]    #自定义模块名,rsync通过模块定义同步的目录,可定义多个

comment = web content    #定义注释说明字串

path = /common    #同步目录的真是路径通过path指定

ignore errors    #忽略一些IO错误

#exclude = test/    #exclude指定common目录下某个目录可以不同步数据

auth users = tom, jerry    #设置允许连接服务器的账户,此账户可以是系统中不存在的用户

secrets file = /etc/rysncd.secrets    #密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效

hosts allow = 192.168.0.0/255.255.255.0   #设置哪些主机可以同步数据,多ip和网段之间使用空格分隔

hosts deny=*    #除了hosts allow定义的主机外,拒绝其他所有

list = false    #客户端请求显示模块列表时,本模块名称是否显示,默认为true

IV. Œuvres démon rsync Tourné

 

Configuration serveur

  • Apache installer un service, fournissant un répertoire du site
[root@server ~]# yum install httpd -y
[root@server ~]# cd /var/www/html/
[root@server html]# ls
[root@server html]# echo "this is test web" > index.html
[root@server html]# chmod 777 index.html 
[root@server html]# 
  • Rsync modifier les fichiers de configuration
vim /etc/rsyncd.conf
1、开启以下功能:
uid = nobody
gid = nobody
use chroot = yes   
//注:用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。
pid file = /var/run/rsyncd.pid    //存放进程ID的文件位置
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2   //同步时不再压缩的文件类型

2、添加以下选项:
address = 192.168.43.101        //添加本机IP地址
log file = /var/log/rsyncd.log    //日志文件位置
port 893                          //端口号
hosts allow = 192.168.43.0/24    //设置白名单,允许哪些地址可以访问

3、添加共享模块名:
[wwwroot]                 //共享文件名,这个自定义
path = /var/www/html      //源目录的实际路径
comment = www.kgc.com     //描述
read only = yes           //是否为只读
auth users = backuper     //授权账户名
secrets file = /etc/rsyncd_users.db   //存放账户信息的数据文件
  • informations de compte éditer le fichier de données
[root@server ~]# cat /etc/rsyncd_users.db
backuper:abc123
//权限设置为600,必须设置为600,否则客户端认证会失败
[root@server ~]# chmod 600 /etc/rsyncd_users.db 
[root@server ~]# 
  • Démarrer le service
[root@server ~]# rsync --daemon
[root@server ~]# netstat -natp | grep rsync
tcp        0      0 192.168.43.101:873      0.0.0.0:*               LISTEN      37983/rsync         
[root@server ~]# 

 

configuration du client

  • mode interactif, les données de téléchargement
[root@client ~]# rsync -avz [email protected]::wwwroot /opt
Password: 
receiving incremental file list
./
index.html

sent 83 bytes  received 172 bytes  102.00 bytes/sec
total size is 17  speedup is 0.07
[root@client ~]# cd /opt
[root@client opt]# ls
index.html  rh
[root@client opt]# cat index.html 
this is test web
[root@client opt]# 

报错: rsync: pas de se connecter à 192.168.43.101 (192.168.43.101): Aucun itinéraire vers l' hôte (113)
Erreur de rsync: erreur dans la douille IO (Code 10) à clientserver.c (122) [Récepteur = 3.0.9]

Solution: fermer le pare-feu du serveur et selinux (arrêt de systemctl firewalld / sentenforce 0)

Ou pare-feu cmd --permanent --add-port = 873 / tcp # règles de pare-feu d'ajout permettent l'accès au port de données 873

  • mode interactif gratuit, écrire un fichier de mot de passe dans le client, en utilisant le --password-file = option FILE Interagir gratuit
##在server的/index.html追加文本
[root@server html]# cat index.html 
this is test web
[root@server html]# echo "123" >> index.html 
[root@server html]# cat index.html 
this is test web
123
[root@server html]#


##在client上下载数据,会覆盖原有的文件
[root@client ~]# echo "abc123" > /etc/server.pass
[root@client ~]# chmod 600 /etc/server.pass 
[root@client ~]# rsync -avz --password-file=/etc/server.pass [email protected]::wwwroot /opt/
receiving incremental file list
index.html

sent 86 bytes  received 177 bytes  526.00 bytes/sec
total size is 21  speedup is 0.08
[root@client ~]# cat /opt/index.html 
this is test web
123
[root@client ~]# 

Les scripts shell, serveur rsync de sauvegarde régulière de données sur le côté client

vi /root/run.sh
#!/bin/bash

export PATH=/bin:/usr/bin:/usr/local/bin

SRC=common #模块名

DEST=/data

server=192.168.0.230

user=tom

passfile=/root/rsync.pass

#if the DEST directory not found, then create one

[ ! -d $DEST ] && mkdir $DEST

[ ! -e $passfile ] && exit 2

rsync -az --delete --password-file=$passfile ${user}@${server}::$SRC $DEST/$(data +%Y%m%d)   #加上日期


##在使用crotab定时任务执行这个脚本
crotab -e
0 0 * * * bash /root/run.sh




V. avec des outils inotify pour obtenir une transmission déclenchée

rsync pour synchroniser les avantages et les inconvénients

  • lacunes rsync

Un temps fixe pour effectuer une sauvegarde, le retard détaillée, la différence en temps réel;

Lorsque la source de synchronisation ne change pas le long terme, tâche périodique intensive n'est pas nécessaire

  • avantage rysnc

Une fois le changement de source de synchronisation, afin de permettre immédiatement la sauvegarde;

Ne change pas tant que la source de synchronisation, la sauvegarde n'est pas exécutée

inotify Présentation

  • Inotify noyau Linux est un mécanisme qui permet de surveiller le fonctionnement du système de fichiers, tels que lecture, écriture, création et ainsi de suite.
  • Inotify sensibles, l'utilisation est très simple, et tâche d'interrogation occupé efficacement que Cron
  • Version de départ disponible 2.6.13;
  • Vous pouvez surveiller les changements du système de fichiers, et de faire une réponse de notification;
  • logiciel auxiliaire: inotify-tools

Configuration rsync + inotify synchronisation en temps réel de

  • Modifier les paramètres du noyau dans le client
[root@client ~]# vim /etc/sysctl.
sysctl.conf  sysctl.d/    
[root@client ~]# vim /etc/sysctl.conf 
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

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


//参数解析
max_queue_event : 监控队伍大小
max_user_instances : 最多监控实例数
max_user_watches : 每个实例最多监控文件数
  • La compilation client et installer inotify-tools aide
yum install gcc gcc-c++ make -y       //安装编译工具
tar zxvf inotify-tools-3.14.tar.gz -C /opt/    //解压
cd /opt/inotify-tools-3.14/
./configure            //编译
make && make install    //安装
  • Surveillance des fichiers clients
[root@client opt]# mkdir myweb
[root@client opt]# ls
index.html  inotify-tools-3.14  myweb  rh
[root@client opt]# inotifywait -mrq -e modify,create,move,delete  /opt/myweb




##
inotifywait:用于持续监控,实时输出结果;
inotifywatch:用于短期监控,任务完成后再出结果
  • En plus d'ouvrir un terminal client, écrire un script shell
[root@client opt]# ls
index.html  inotify.sh  inotify-tools-3.14  myweb  rh
[root@client opt]# cat inotify.sh 
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /opt/myweb"
RSYNC_CMD="rsync -avz --delete --password-file=/etc/server.pass /opt/myweb/ [email protected]::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE ##读取输出的监控记录
 do
   if [ $(pgrep rsync | wc -l) -le 0 ]; then  ##如果rsync未在执行,则立即启动
      $RSYNC_CMD
   fi
done
[root@client opt]# chmod +x inotify.sh
  • Sur le serveur, désactiver le mode de lecture seule, et redémarrez le service
[root@server html]# vi /etc/rsyncd.conf 
......
read only = no    
......
[root@server html]# kill $(cat /var/run/rsyncd.pid)
[root@server html]# rsync --daemon  
[root@server html]#  netstat -anpt |grep rsync
tcp        0      0 192.168.43.101:873      0.0.0.0:*               LISTEN      38855/rsync         
[root@server html]# chmod 777 /var/www/html/
[root@server html]# 
  • Le script de démarrage sur le client
[root@client opt]#  chmod 777 /opt/myweb/
[root@client opt]# ./inotify.sh 

Tester si la synchronisation des données

  • Ajout de données dans un client / opt / MyWeb / répertoire, voir le serveur / var / www / HMTL aucune donnée

  • Supprimer ces données dans le client. Voir les données du serveur ne sera pas supprimé

 

 

 

Publié 139 articles originaux · éloge de won 168 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_42761527/article/details/105062562
conseillé
Classement