> CentOS > CentOS教程 >

CentOS系统下rsync实现服务器间数据同步

1、 rsync 

   全称:remote sync 远程同步

 

   用途:服务器之间常常要保持些文件或目录的一致,比如一些大的软件下载网站,它们通常使用 多台服务器来提供下载服务。当一台服务器上的文件更新后,其它的服务器也需要更新,而且 在更新的时候应该是只对新增或是修改过的文件进行更新,否则会造成网络带宽和时间的浪费。rsync就是能有效的保持文件及目录的一致的优秀软件。

   特点:rsync在同步文件的同时,可以保持原来文件的权限,时间戳,软硬连接等附加等信息,             同时rsync可以通过使用ssh方式传输文件,保证传输安全性

 

 

 

 
#rsync命令工作模式:
#第一种:shell模式,也称作本地模式
#第二种:远程shell模式,此时可以利用ssh协议承载其数据传输过程
#第三种:列表模式,其工作方式与ls相似,仅列出源的内容;#rsync -nv
#第四种:服务器模式,此时,rsync可以工作为守护进程,能够接收客服端的数据传输请求;在使用时,可以在客户端使用rsync命令把文件发送给守护进程,也可以向服务器请求获取文件。

 

 

 
#rsync 命令选项
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
#        -n: 在不确定命令是否能按意愿执行时,务必要事先测试;
#              -n可以完成此功能;
#        -v: --verbose,详细输出模式
#        -q: --quiet,静默模式
#        -c: --checksum,开启校验功能,强制对文件传输进行校验
#        -r: --recursive,递归复制;
#        -a: --archives,归档,保留文件的原有属性
#        -p: --perms 保留文件的权限
#        -t: --times 保留文件的时间戳
#        -l: --links 保留文件的符号链接
#        -g: --group 保留文件的属组
#        -o: --owner 保留文件的属主
#        -D: --devices 保留设备文件              
#        (-a 相当于其他属性的总和 即-p -t -l -g -o -d...)
#        -e ssh: 表示使用ssh协议作承载
#        -z: 对文件压缩后传输
#        --progress:显示进度条
#        --stats: 显示如何执行压缩和传输

 

 

 
#注意:
#rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复#制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;
#如:
#rsync -r /data /backup/  将data整个目录同步到/backup中
#rsync -r /data /backup/  将data目录中所有内容同步到/backup中

 

 

2、 rsync 实现服务器间同步

   规划如下:

wKioL1M1VACyH4P6AACHaC_3McY092.jpg

 2.1 在MySQL服务器上配置rsync服务

 

 
#rsync 脚本:/etc/xinetd.d/rsync
#rsync 配置文件:/etc/rsyncd.conf
#rsync 帮助命令:man rsyncd.conf

 

   (1)编辑rsync配置文件

 
#vim /etc/rsyncd.conf

 

    wKioL1M1WNyzckxsAAFrVg2BODs872.jpg

   

 
#Global Settings  全局设置,描述信息 
uid = nobody      运行rsync进程的用户
gid = nobody      运行rsync进程的组
use chroot = no   是否将用户禁锢在其家目录
max connections = 5 数据同步时最大连接数
strict modes = false 严格模式:建议设置为false,否则验证用户时容易出错
pid file = /var/run/rsyncd.pid  进程文件目录
log file = /var/log/rsyncd.log  日志文件目录
[mydata]               共享目录名称
path = /tmp            需要备份的文件存放位置
ignore errors = yes    数据同步期间忽略I/O错误
read only = no         只读,如果只读将无法上传数据
write only = no        只写,如果只写将无法下载数据
hosts allow = 172.16.0.0/16   允许的主机或者网段
hosts deny = *                拒绝的主机或者网段
list = false                  不列出文件
uid = root                    运行进程的用户
gid = root                    运行进程的组
auth users = myuser           验证用户
secrets file = /etc/rsync.passwd  用户密码文件

     

     (2)创建用户密码文件,同时将文件放到备份服务器中

   

 
#vim /etc/rsync.passwd
#设置账户密码
#如 myuser:mypass

      

       

     wKioL1M1W8yiu5AmAAAZ_N6UUW4031.jpg  

 

   

 
#赋予文件权限
#chmod 600 /etc/rsync.passwd  建议只有管理员有权限
#rsync /etc/rsync.passwd root@172.16.251.226:/etc -p 文件放到备份服务器上一份,并保持两者权限相同 -p

 

    (3)备份服务器测试-->linux server 172.16.251.226

     

   

        查看MySQL服务器共享目录中文件

       wKiom1M1X16BVVa4AAJr8oEIrwo222.jpg

      将mysql服务器上的mydata中的数据同步到当前服务器/backup目录下

 

       

 
#rsync -r myuser@172.16.251.241::mysql /backup 递归同步到本地/backup目录
#ll /backup                                    查看/backup目录文件

     

    wKioL1M1YJPTM4UdAAHR_H2tLEY892.jpg

        备份服务器做周期性任务计划

       

 
#注意:在备份服务器同时存放一份用户密码文件,是为了做数据同步时无需再输入账户密码;因此基于此我们可以再做一个周期性任务计划实现运维自动化
#rsync -r --password-file=/etc/rsync.passwd myuser@172.16.251.241::mydata /backup

   

     方法①

 
#crontab -e
#30 2 * * * rsync -r --password-file=/etc/rsynac.passwd myuser@172.16.251.241:mydata /backup

     方法②

     

 
#vim rsync.sh  建脚本
#脚本内容
 #!/bin/bash
 echo "start"
 rsync -r --password-file=/etc/rsync.passwd myuser@172.16.251.241::mydata /backup &> /dev/null
                                                                                                                                                                                                                   
 echo "finished"
#crontab -e  建周期性任务假话
#30 2 * * *  .rsync.bash   凌晨2:30 进行一次数据同步,通过执行脚本实现

 

       

       

    (4)windows server 做数据同步 172.168.254.84

 

         官网下载绿色版cwRsync https://www.itefix.no/i2/content/cwrsync-free-edition

        wKiom1M1bfPhzKJAAAE0Ustk1b4940.jpg

         

   

1
#下载文件后首先在文件夹中创建rsync.passwd文件,内容为密码mypass

   

 
#创建批处理文件a.bat
#文件内容rsync -r myuser@172.16.251.241::mydata /cygdrive/f/test --password-file=rsync.passwd

 

   wKiom1M1b5riY7IzAADfk6ziOl4268.jpg

         

 
#手动同步
#cwRsync 存放在本地路径 C:\Users\jun\Desktop\3.1.0
#运行->cmd
#cd  C:\Users\jun\Desktop\3.1.0
#rsync -r myuser@172.16.251.241::mydata /cygdrive/f/test --password-file=rsync.passwd
将数据同步到本地F://test文件夹中

   wKioL1M1b9HAdTjHAACDUMYNouE583.jpg

   

 
#如果想做周期性计划
#则找到任务计划程序,将自动同步的脚本定时执行即可,关于windows配置此处略
(责任编辑:IT)