CentOS下rsync服务器安装与配置-数据同步|文件增量备份
编辑:狂族晨曦 来源:系统运维,经验杂笔 日期:2016-08-05 阅读: 3,012 次 4 条评论 » 百度已收录
我们在使用服务器发布我们的网站或者生产环境中部署业务的时候,通常要考虑到文件的备份,而文件的备份比较高效的备份是增量备份,rsync软件就是这样的一个工具。
为了实现多个服务器负载均衡,我们需要这几个服务器之间进行数据同步,而rsync软件也能胜任,下面先森来介绍如何架设rsync服务器来达到文件增量备份和数据同步的功能。
Rsync同步
什么是rsync
Rsync(remote synchronize)是一个远程文件同步工具;Rsync使用“Rsync算法”来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;
Rsync是替代rcp的一个工具,目前由rsync.samba.org维护,因而rsync.conf文件的格式类似于samba的主配置文件;
Rsync可通过rsh或ssh使用,也能以daemon模式运行,以daemon方式运行时,Rsync Server会打开一个873端口等待客户端连接.连接时,Rsync Server会检查口令是否相符,若口令相符,则进行文件传输.第一次会把整份文件传输一次,以后则为增量传输;
Rsync支持大多数的类Unix系统(Linux、Solaris、BSD等);此外,在windows平台也有相应的版本,如cwRsync和Sync2NAS等工具。
环境准备
既然是同步,首先我们需要准备的是两台服务器。先森准备的是虚拟机上的两台装好CentOS 6.8的服务器。
为了方便,我们称其中主要使用的、产生数据的一台为服务端。用于备份数据的那台称为客户端。
两台服务器都需要安装rsync。
rsyncf服务端
rsync的安装
rsync有很多种安装方式,最简单的是yum安装,复杂一点的是编译安装,还有先森选择的是rpm包安装。
先森rsync版本是的rsync-3.0.9-2.el6.rfx.x86_64.rpm,直接安装即可。
rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm
rsync的启动
方法一:CentOS 默认以 xinetd 方式运行 rsync 服务。
所以选择这种方式启动还需要安装超级守护进程xinetd。
yum install -y xinetd
rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。
编辑rsync的xinetd配置文件/etc/xinetd.d/rsync文件,修改参数
server_args = --daemon --config=/etc/rsyncd/rsyncd.conf
可以配置rsync服务器启动时的参数。(一般不需要)
要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:
chkconfig rsync on service xinetd restart
方法二:独立运行 rsync 服务
最简单的独立运行 rsync 服务的方法是执行如下的命令:
/usr/bin/rsync --daemon
#编辑 /etc/rc.local文件 加入
/usr/bin/rsync --daemon
保证每次开机启动都会自动启动rsync服务。
方法一的优点是,开启、停止rsync服务方便。
方法二的优点在于不用先安装一个服务。如何选择还是视使用情况而定了。
一般来说:rsync服务器负载比较高,则使用独立启动模式
rsync服务器负载较低,使用xinetd运行方式
rsync的配置
rsync的主要有以下三个配置文件:rsyncd.conf (主配置文件)
rsyncd.secrets (密码文件)
rsyncd.motd (rysnc服务器信息:连接后的欢迎信息)
两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件。
# mkdir /etc/rsyncd # cd /etc/rsyncd # touch rsyncd.conf # touch rsyncd.secrets # touch rsyncd.motd
配置文件 rsyncd.conf 默认在 /etc 目录下。为了将所有与 rsync 服务相关的文件放在单独的目录下,可以执行如下命令:
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
注:创建软链接一定要用绝对路径,用相对路径会造成断链。
为了密码安全,我们需要把rsyncd.secrets的权限设置为600
chmod 600 rsyncd.secrets
1、配置rsyncd.conf文件
#服务器传输文件时用root 权限执行 uid = root gid = root #指定服务端口,默认873 port = 873 use chroot = no #只读,不让客户端上传文件到服务器 read only = yes #limit access to private LANs #限制能访问该服务的网段 hosts allow=192.168.0.0/255.255.0.0 hosts deny=* #最大连接数 max connections = 5 #告诉进程写到该文件中 pid file = /var/run/rsyncd.pid #密码存在哪个文件 secrets file = /etc/rsyncd/rsyncd.secrets #服务器信息定义指向该文件,该文件可写服务器信息,欢迎的文字 motd file = /etc/rsyncd/rsyncd.motd #rsync 服务器的日志 log file = /var/log/rsync.log #这是传输文件的日志 transfer logging = yes #日志文件格式 log format = %t %a %m %f %b syslog facility = local3 timeout = 300 #超时时间 # MODULE OPTIONS #模块的名称,可以自定义 [testhome] #同步的目录 path = /usr/local/nginx/ftp list=yes #忽略IO错误 ignore errors #验证用户,我的用户是root auth users = root comment = test home #不同步的目录 exclude = .git/ #模块的名称,可以自定义 [datahome] #同步的目录 path = /web/data #rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。 list=yes #忽略IO错误 ignore errors #验证用户,我的用户是user auth users = user #注释可以自己定义,写什么都行,写点相关的内容就行 comment = data home #不同步的目录 exclude = .git/
2、配置rsyncd.secrets文件
密码文件: rsyncd.secrets的内容格式:“用户名:口令”
例:
root:123456 user:123456
为了密码的安全性,我们要保证把权限设为600以及root权限
chown root:root /etc/rsyncd/rsyncd.secrets chmod 600 /etc/rsyncd/rsyncd.secrets
3、配置rsyncd.motd文件
这个文件是客户端连接时看到的欢迎信息文件,内容自定义,也可以为空:
++++++++++++++++++++++++++++++++++++++ Welcome ++++++++++++++++++++++++++++++++++++++
4、开启防火墙873端口
Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT /etc/rc.d/init.d/iptables save
查看一下防火墙是不是打开了 873端口;
iptables -L -n
5、启动rsync
service xinetd start
6、查看服务是否运行
netstat -an | grep 873
tcp 0 0 :::873 :::* LISTEN 3399/xinetd
rsyncf客户端
1、安装
客户端也要安装rsync,但是不用做配置,也不用启动,因为客户端仅仅需要能够运行# rsync *** 这条命令
yum install -y xinetd rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm
2、同步数据
(1)方式一:
rsync -avzP root@192.168.2.72::testhome /tmp/david/
参数说明:-a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-z 传输时压缩;
-P 传输进度;
-v --verbose 详细模式输出;
-r 是递归;
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件。
root是认证用户,IP地址是服务端的IP,testhome是配置文件中写的模块名称,/tmp/david是指保存到客户端的位置。
(2)方式二:
rsync -avzP --delete root@192.168.2.72::testhome /tmp/david/
这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 linuxsirhome目录中有服务器上不存在的文件,则删除。最终目的是让linuxsirhome目录上的数据完全与服务器。
上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除。
(3)方式三:
rsync -avzP --delete --password-file=rsync.password root@192.168.2.72::testhome /tmp/david/
这次我们加了一个选项 –password-file=rsync.password ,这是当我们以linuxsir用户登录rsync服务器同步数据时,密码将读取 rsync.password 这个文件。
这个文件内容只是服务端中rsync中设置的root认证用户的密码。
在你需要的地方创建rsync.password文件,然后只保存密码在其中:
touch rsync.password echo "123456" > rsync.password chmod 600 rsync.password
3、用crontab让客户端自动与服务端同步数据
我们在/etc/cron.daily.rsync中创建了一个文件名为:root.sh ,并且是权限是 755
mkdir /etc/cron.daily.rsync cd /etc/cron.daily.rsync touch root.sh chmod 755 root.sh
编辑root.sh,内容如下:
vim root.sh
#!/bin/sh #192.168.2.72 testhome backup /usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/
:wq
然后创建定时任务:
crontab -e
*/1 * * * * /usr/bin/run-parts /etc/cron.daily.rsync 1> /dev/null
表示每分钟执行一次/etc/cron.daily.rsync里的脚本。
查看定时任务:
crontab -l
当然,如果你觉得创建脚本麻烦的话,也可以直接将命令写在定时任务中。
crontab -e */1 * * * * usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/
测试
测试的话非常简单,只需要在服务端同步文件夹内增加或删除文件,过一分钟后到客户端上看效果即可。
总结
配置Rsync的环境一定要确保防火墙873端口打开,以及SELinux关闭,否则肯定会出错的。
在配置的过程中可能会出现这样那样的问题,先森也会整理一篇问题总结,后续分享。
Rsync与Crontab搭配起来同步并不是最好的同步方案,Rsync可以与其他工具使用使得同步更安全、准确,请悉知。
历史上的今天:
- 2015: 超级巧合的60张照片 看了一遍又一遍(一)(0)
转载请注明出处来自https://www.capjsj.cn/rsync_crontab.html
不错,学习了!
等以后有钱接触到了,再回来学习!
很实用,谢谢分享!
写的很详细 不错学习了