arquitectura del sistema Linux ----- sincronización remota herramienta rsync

directorio

 

Un .rsync general

Dos específica .rsync comando de operación

Tres .rsync análisis del archivo de configuración

IV. Funciona el demonio rsync dada vuelta

V. inotify con herramientas para lograr la transmisión provocada


Un .rsync general

  • r (remoto) datos de sincronización software bajo UNIX y UNIX-plataforma de reflejo, no se requiere como copia de seguridad completa ftp, copia de seguridad diferencial se puede llevar a cabo de acuerdo con los datos de variación rsync, reduciendo así el tráfico de datos para mejorar la eficiencia
  • rsync puede ser local o remoto para conseguir copia de seguridad incremental. sincronización de archivos rsync puede ser implementado en la máquina local y el host remoto (local o remoto para empujar, tirar modo dos sincronización remota local) se puede realizar en diferentes caminos locales (un directorio diferente, entre particiones) de sincronización de archivos, pero no ruta de acceso a una ruta remota síncrona remoto (SCP se puede realizar) entre 2
  • rsync con las tareas planificadas, se puede lograr la sincronización o el ciclo de sincronización
  • rsync configuración inotify o sersync, puede alcanzar gatillo sincronización en tiempo real
  • Este es el rsync oficial de la interfaz web

  • rsync divide en tres perfiles: tsyncd.conf (perfil principal); rsync.secrets (archivo de contraseñas); rsyncd.motd (información del servidor de archivos)
  • rsync tiene las siguientes características:

1. Espejo puede salvar a todo un sistema de árbol de directorios y archivos

2. Usted puede mantener fácilmente el tiempo los permisos del archivo original, enlaces blandos y duros, etc., se pueden instalar sin un permiso especial

3. La alta eficacia, la primera rsync sincronización copiará todo el contenido, pero la siguiente transmisión solamente modificado archivos, compresión rsync y operación de descompresión pueden ser llevadas a cabo durante la transmisión de datos, para utilizar menos ancho de banda

4. seguro, el apoyo rsync transporte anónima, para facilitar la creación de reflejo sitio, se puede usar cuando se transmiten datos encriptada ssh transporte

Nota: En centos sistema de rsync sistema viene con ninguna instalación adicional, pero si se utiliza para minimizar la instalación, se puede utilizar yum install -y RSYNC instalarlo.

5. Apoyar el límite de velocidad, soporte para HTTP

  • patrón de sincronización rsync compuesto de dos partes, el modo de inspección (decidir qué archivos necesita sincronización) y el patrón de sincronización (sincronización de archivos)

(1) Compruebe el perfil es de acuerdo a la norma especificada para comprobar lo que necesitan sincronizarse, tales como los archivos que no se transmiten explícitamente excluidos los archivos. Por defecto, rsync utilizando el algoritmo de "revisión rápida" para comprobar rápidamente el tamaño del archivo de origen y el archivo de destino, -mtime (hora de modificación) si, y si no, entonces necesitará transferencia. Por supuesto, se puede cambiar por una verificación rápida del modo de inspección RSYNC especificar ciertas opciones en la línea de comandos, como "--Tamaño de sólo" opción representa una "revisión rápida" sólo comprueba el tamaño de archivo del archivo como un archivo diferente a transmitir. rsync es compatible con una gran cantidad de opciones, patrón de prueba de costumbre es muy elástica.

(2) El modo de sincronización hace referencia al archivo se determina para ser sincronizado, lo que el trabajo adicional por hacer antes de que ocurra el proceso de sincronización. Por ejemplo, si la anteriormente mencionada primera borrar el archivo de destino en el host de origen no, pero algunos archivos en el host de destino, si la primera copia de seguridad ya existe, si debe o no seguir enlaces y otras operaciones de archivo adicional. rsync también ofrece una gran cantidad de opciones para hacer patrones de sincronización se vuelven más flexibles.

En términos relativos, el modo de sincronización especificado para algunos de la opción manual de rsync más común, sólo el modo de comprobación especificada sólo cuando hay necesidades especiales, porque la mayoría de las opciones del modo de verificación pueden afectar el desempeño de rsync.

  • Tres modos de rsync

(1). Sincronizar el sistema de archivos local. De línea de comandos segmento de formato de sintaxis de "local".

 Local: rsync [OPCIÓN ...] SRC ... [DEST] 

(2) un host local y un host remoto utilizando la comunicación alejado de la cáscara, sintaxis del comando es

Acceso a través de shell remoto:
Tire: rsync [OPCIÓN ...] [usuario @] HOST: SRC ... [DEST]
empuje: rsync [OPCIÓN ...] SRC ... [usuario @] HOST: DEST 

(3) el anfitrión local está conectado daemon rsync en el host remoto a través de un socket de red, la sintaxis del comando es:

Acceso a través de rsync demonio: 
Tire: rsync [OPCIÓN ...] [usuario @] HOST :: SRC ... [DEST]
rsync [OPCIÓN ...] rsync: // [usuario @] host [: puerto] / SRC ... [DEST]
empuje: rsync [OPCIÓN ...] SRC ... [usuario @] HOST :: DEST
rsync [OPCIÓN ...] SRC ... rsync: // [usuario @] host [: PORT ] / DEST 

Dos específica .rsync comando de operación

copia local

  • Formato: rsync [opciones] posición objetivo original
常用选项有:
-a    //归档模式,递归保留对象属性,等同于 -rlptgoD
-v    //显示像详细信息
-z    //在传输文件时进行压缩
-H    //保留硬链接文件
-A    //保留ACL属性
-t    //暴露修改时间属性
-p    //保留文件权限属性
-g    //保留文件所属组属性
--progress    //显示数据传输的进度信息
--password-file=FILE    //指定密码文件,将密码写入文件,实现免交互数据库同步,需要修改权限,使用这个选项需要开启rsync daemon模式
--delete    //删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步中经常加上这个参数
--list-only    //仅列出服务器模板列表,需要rsync服务器设置list=true
--checksum    //根据对象的校验和来决定是否跳过文件
  • Ejemplos
[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

Copia por shell remoto

  • Ejemplos de formatos de datos y descargas
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 ~]#
  • Los formatos de datos y ejemplos de subida
##格式为:
上传数据: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显示进度条

Copiar a través de procesos rsync

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

 

Tres .rsync análisis del archivo de configuración

  • perfiles Rsync.conf están configurados por una pluralidad de módulos y la composición configuración general,
  • sintaxis del archivo de configuración es:
模块以 [模块名] 开始

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

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

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

以 # 或 ; 开始的行为注释

\ 为续行符
  • Todas las líneas son globales parámetro de configuración [módulo 1] que no sea, por supuesto, también es posible, en caso de que el valor del parámetro es un parámetro globales parámetros del módulo que forma parte del archivo de definición de los valores por defecto para todos los módulos.
  • Los principales parámetros de los módulos utilizados para definir qué directorios rsync servidor para ser sincronizados. Formato de declaración del módulo debe ser la forma [módulo]; es el nombre del cliente rsync para ver el nombre. Al igual que en el nombre de recurso compartido servidor Samba. El servidor de datos está sincronizada por el camino real para especificar, de acuerdo con sus propias necesidades, para especificar varios módulos
  • rsync permisos de archivo de contraseña de autenticación debe ser 600, de lo contrario el cliente no puede conectar el servidor
  • archivo de contraseña de autenticación rsync en cada línea especifica un nombre de usuario: contraseña pares en el formato: nombre de usuario: 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. Funciona el demonio rsync dada vuelta

 

Configuración del servidor

  • Apache instalar un servicio, que proporciona un directorio de sitios
[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 modificar archivos de configuración
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   //存放账户信息的数据文件
  • archivo de datos de la edición de información de la cuenta
[root@server ~]# cat /etc/rsyncd_users.db
backuper:abc123
//权限设置为600,必须设置为600,否则客户端认证会失败
[root@server ~]# chmod 600 /etc/rsyncd_users.db 
[root@server ~]# 
  • Servicio de inicio
[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 ~]# 

 

configuración del cliente

  • El modo interactivo, descarga de datos
[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: Error al conectarse a 192.168.43.101 (192.168.43.101): No ruta a host (113)
de error rsync: error en el zócalo IO (código 10) en clientserver.c (122) [Receptor = 3.0.9]

Solución: cerrar el servidor de seguridad del servidor y SELinux (parada systemctl firewalld / sentenforce 0)

O firewall-cmd --permanent --add-port = 873 / tcp # reglas de firewall add permiten el acceso al puerto de datos 873

  • modo interactivo gratuito, escribir un archivo de contraseña en el cliente, utilizando la opción ARCHIVO = --password-archivo libre de interactuar
##在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 ~]# 

scripts de shell, regulares servidor rsync copia de seguridad de datos en el lado del cliente

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. inotify con herramientas para lograr la transmisión provocada

rsync para sincronizar los pros y los contras

  • deficiencias rsync

Un tiempo fijo para realizar una copia de seguridad, el retraso se detalla, la diferencia en tiempo real;

Cuando la fuente de sincronización no cambia el largo plazo, la tarea periódica intensiva no es necesario

  • ventaja rysnc

Una vez que el cambio de fuente de sincronización, para permitir la copia de seguridad de inmediato;

No cambia, siempre y cuando la fuente de sincronización, no se realiza la copia de seguridad

inotify Introducción

  • Inotify núcleo de Linux es un mecanismo que puede controlar las operaciones del sistema de archivos, tales como leer, escribir, crear y así sucesivamente.
  • Inotify sensibles, el uso es muy simple, y ocupado tarea de sondeo eficiente que cron
  • Disponible la versión 2.6.13 de partida;
  • Puede supervisar los cambios del sistema de archivos, y hacer que la respuesta de notificación;
  • software auxiliar: inotify-herramientas

Configuración de rsync + inotify sincronización en tiempo real

  • Modificar los parámetros del kernel en el cliente
[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 compilación cliente e instalar inotify-herramientas de ayuda
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    //安装
  • Monitoreo de archivos del cliente
[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:用于短期监控,任务完成后再出结果
  • Además de abrir un cliente de terminal, escribir un script de 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
  • En el servidor, desactive el modo de sólo lectura, y reinicie el servicio
[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]# 
  • script de inicio en el cliente
[root@client opt]#  chmod 777 /opt/myweb/
[root@client opt]# ./inotify.sh 

Probar si la sincronización de datos

  • Adición de datos en un directorio / opt / myweb / directorio del cliente, consulte el servidor / var / www / hmtl no hay datos

  • Eliminar estos datos en el cliente. no se eliminará de datos vista del servidor

 

 

 

Publicados 139 artículos originales · ganado elogios 168 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/qq_42761527/article/details/105062562
Recomendado
Clasificación