现在的位置: 首页 > 教程分享 > 正文

Linux下搭建配置Rsync服务器

2017年06月14日 教程分享 ⁄ 共 4801字 ⁄ 字号 暂无评论

Rsync全称为Remote Sync,即远程同步。是一款支持本地、远程、服务端同步的强大增量备份工具,使用Rsync进行数据同步,还能保持原来文件的权限、时间、软硬链接等等,非常好用!本文主要介绍服务端同步,关于本地、远程同步请移步:两台Linux主机定时备份数据 – Rsync

实验环境说明

花郎是使用VMware虚拟机做实验,两台主机的操作系统均为CentOS 6.5;一台是主机A(Wanghualang-A),IP地址为192.168.168.68,作为Rsync服务端;另一台是主机B(Wanghualang-B),IP地址为192.168.168.69,作为Rsync客户端。

服务端篇

第一步 安装软件

安装rsync软件包,并确保安装成功;

  1. [root@Wanghualang-A ~]# yum -y install rsync  
  2. [root@Wanghualang-A ~]# rpm -qa | grep rsync  

第二步 新建目录、创建同步数据

先创建一个rsync目录,并创建一个文件到这个目录里作为同步测试用,再创建一个SexInSex目录,测试同步例外目录;

  1. [root@Wanghualang-A ~]# mkdir -p /data/rsync  
  2. [root@Wanghualang-A ~]# touch Wanghualang.txt /data/rsync/  
  3. [root@Wanghualang-A ~]# mkdir /data/rsync/SexInSex  

第三步 配置服务

该配置文件需要手动创建,参数比较灵活,按需设置即可;

  1. [root@Wanghualang-A ~]# vim /etc/rsyncd.conf  

配置内容如下:

  1. motd file = /etc/rsyncd.motd  
  2. transfer logging = yes  
  3. log file = /var/log/rsync.log  
  4. pid file = /var/run/rsync.pid  
  5. lock file = /var/run/rsync.lock  
  6. port = 873  
  7. address = 192.168.168.68  
  8. uid = rsync  
  9. gid = rsync  
  10. user chroot = no  
  11. read only = yes  
  12. max connections = 100  
  13. timeout = 60  
  14. [Wanghualang_Backup]  
  15. comment = Wanghualang_Rsync  
  16. path = /data/rsync/  
  17. exclude = SexInSex/  
  18. ignore error  
  19. auth users = wanghualang  
  20. secrets file = /etc/rsyncd.password  
  21. host allow = 192.168.168.69  
  22. host deny = *  
  23. read only = false  
  24. list = true  

配置参数说明

  1. #服务器信息提示文件名称  
  2. motd file = /etc/rsync.motd  
  3. #数据传输日志  
  4. transfer logging = yes  
  5. #日志文件名称 
  6. log file = /var/log/rsync.log  
  7. #进程对应文件名称  
  8. pid file = /var/run/rsync.pid  
  9. #进程锁文件名称  
  10. lock file = /var/run/rsync.lock  
  11. #设置服务器监听端口号(默认873)  
  12. port = 873  
  13. #监听IP地址  
  14. address = 192.168.168.68  
  15. #数据传输用户名  
  16. uid = rsync  
  17. #数据传输用户组  
  18. gid = rsync  
  19. #安全相关参数(我也不是很清楚,就选no吧)  
  20. user chroot = no  
  21. #客户端默认只能读,这里改为也有写入权限  
  22. read only = false  
  23. #客户端最大连接数(0代表无限制,这里使用100)  
  24. max connections = 100  
  25. #超时时间  
  26. timeout = 60  
  27. #模块名称  
  28. [Wanghualang_Backup]  
  29. #模块注释  
  30. comment = Wanghualang_Rsync  
  31. #同步目录  
  32. path = /data/rsync/  
  33. #例外目录  
  34. exclude = SexInSex 
  35. #忽略IO错误  
  36. ignore error  
  37. #虚拟同步用户(可以是系统中不存在的用户)  
  38. auth users = wanghualang  
  39. #密码验证  
  40. secrets file = /etc/rsyncd.password  
  41. #允许访问(可以是主机IP,也可以是网段,多个IP与网段之间使用空格分隔)  
  42. host allow = 192.168.168.69  
  43. #拒绝访问(除hosts allow定义的主机外)  
  44. host deny = *  
  45. #只读开关(实际备份工作中,一般改为false,即有写入权限)  
  46. read only = false  
  47. #显示文件列表权限  
  48. list = true  

创建密码文件,用于客户端同步时进行密码验证,密码文件权限必须设置600;

  1. [root@Wanghualang-A ~]# echo "wanghualang:123456"  /etc/rsyncd.password  
  2. [root@Wanghualang-A ~]# chmod 600 /etc/rsyncd.password  

创建登陆信息提示文件,也就是同步时能看到的欢迎信息;

  1. [root@Wanghualang-A ~]# echo "Welcome To My Blog : http://www.wanghualang.com" /etc/rsyncd.motd  

根据rsync配置文件,创建rsync用户,该用户不需要提供登陆Shell,也不需要创建家目录;

  1. [root@Wanghualang-A ~]# useradd rsync -s /sbin/nologin -M  

更改同步目录的属主、属组,不然其他客户端没有权限读取或写入备份服务器;

  1. [root@Wanghualang-A ~]# chown -R rsync.rsync /data/rsync/  

第四步 启动服务

启动rsync服务,并设置开机启动,防火墙和SElinux自己关闭吧;

  1. [root@Wanghualang-A ~]# rsync --daemon --config=/etc/rsyncd.conf  
  2. [root@Wanghualang-A ~]# echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" /etc/rc.local  

客户端篇

第一步 安装软件

安装rsync软件包,并确保安装成功;

  1. [root@Wanghualang-B ~]# yum -y install rsync  
  2. [root@Wanghualang-B ~]# rpm -qa | grep rsync  

第二步 新建目录

新建一个同步远程主机数据的本地目录;

  1. [root@Wanghualang-B ~]# mkdir -p /data/rsync  

第三步 同步数据

教程中A机是rsync服务端,B机是客户端,rsync在不同场景下的使用方式有所不同,或者说同步方向(推、拉)决定如何使用命令,这里分两个场景来介绍命令的用法。注意,不管是什么情况,都是以客户端为参照物,也就是说都是在B机上使用rsync命令。

No.1 被动同步更新(拉)

A机是rsync服务端,存放重要数据,且数据频繁变化;B机是客户端,经常需要获取A机上最新的数据。

  1. [root@Wanghualang-B ~]# rsync -avz wanghualang@192.168.168.68::Wanghualang_Backup /data/rsync/  

此时会弹出输入rsync服务端配置文件上的用户密码的提示,密码正确便开始同步。

如果不想每次同步时都输入密码,就在rsync客户端上创建密码文件,它和rsync服务端密码文件稍微有些不同,客户端密码文件不需要用户名,只需要密码就行,密码文件权限也是600;

  1. [root@Wanghualang-B ~]# echo "123456" > /etc/rsyncd.password  
  2. [root@Wanghualang-B ~]# chmod 600 /etc/rsyncd.password  

创建好密码文件后,再使用如下命令即可:

  1. [root@Wanghualang-B ~]# rsync -avz wanghualang@192.168.168.68::Wanghualang_Backup /data/rsync/ --password-file=/etc/rsyncd.password  

一般情况下,在使用被动同步更新的时候,往往会要求B机客户端和A机服务端保持数据一致性,可以使用 --delete 参数;

  1. [root@Wanghualang-B ~]# rsync -avz --delete wanghualang@192.168.168.68::Wanghualang_Backup /data/rsync/ --password-file=/etc/rsyncd.password  

使用--delete的参数后,源目录、目标目录的内容将会一致,说通俗一些就是:我有(源目录),你也有(目标目录);你有,我没有,你很快也将没有!同步结束后,可以检查一下A机、B机上的 /data/rsync/ 目录,看看数据是否一致。注意,因为Rsync服务端配置里 /SexInSex 文件夹是不同步的,所以B机的/data/rsync目录下便没有SexInSex文件夹。

  1. [root@Wanghualang-A ~]# ls /data/rsync/  
  2. [root@Wanghualang-B ~]# ls /data/rsync/  

No.2 主动同步备份(推)

A机是rsync服务端,专门用于存放备份数据;B机客户端,很多重要数据,且修改频繁,需要及时备份;

  1. [root@Wanghualang-B ~]# rsync -avz /data/rsync/ wanghualang@192.168.168.68::Wanghualang_Backup --password-file=/etc/rsyncd.password  

同步结束后,可以检查一下A机上的/data/rsync目录,看看有没B机推过来的最新数据:

  1. [root@Wanghualang-A ~]# ls /data/rsync/  

第四步 计划任务

可以按需求进行计划备份,比如每10分钟备份一次;

  1. [root@Wanghualang-B ~]# crontab -e  

被动同步更新加入以下内容:

  1. */10 * * * * rsync -avz wanghualang@192.168.168.68::Wanghualang_Backup /data/rsync/ --password-file=/etc/rsyncd.password  

主动同步备份加入以下内容:

  1. */10 * * * * rsync -avz /data/rsync/ wanghualang@192.168.168.68::Wanghualang_Backup --password-file=/etc/rsyncd.password  

给我留言

留言无头像?

×