首页 > 代码库 > 利用rsync进行数据同步
利用rsync进行数据同步
Rsync简介
rsync是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件。它使用所谓的“rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。所以通常可以作为备份工具来使用。
运行rsync server的机器也叫backup server,一个rsync server可同时备份多个client的数据;也可以多个rsync server备份一个client的数据。rsync可以搭配ssh甚至使用daemon模式。rsync server会打开一个873的服务通道(port),等待对方rsync连接。连接时,rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
在企业生产环境中,一般都会有主和备用服务器,经常用rsync服务来进行主备同步。
rsync主要采用三种方法输出数据
本地传输。
远程shell传输
守护进程方式
一般前两种方式在企业中不常用,今天来介绍下第三种方式。
本次服务配置是在虚拟机中进行,镜像文件为centos 6.5 64位(服务端和客户端相同)。
linux版本 2.6.32-642.13.1.el6.x86_64。
Rsync具体配置
1.服务端(接收数据)的配置
在配置前关闭服务端的selinux
编辑配置文件
vim /etc/sysconfig/selinux 将SELINUX=enforcing修改为SELINUX=disabled
重启系统 reboot
1.一般rsync服务已经安装,无需再进行安装。
[root@backupserver tuwei]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
该实验环境rsync为3.0.6版本
2.创建配置文件(实际生产环境中不要使用中文备注,系统语言环境为en_US.UTF-8,本人在这里遇到坑,加了中文备注,后面客户端同步时报错,没有找到解决方法,去掉中文备注后,正常)
vim /etc/rsyncd.conf
#rsync_config-----------------------------start
#created by tuwei at 2017/4/16 09:55
## rsyncd.conf start##
uid=root #设置rsync运行权限为root
gid=root #设置rsync运行权限为root
use chroot=no #默认为true,修改为false,增加对目录文件软连接的备份
max connections=200 #最大连接数
timeout=300 #连接超时时间 300s
log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提前创建
pid file = /var/run/rsyncd.pid #pid文件的存放位置
lock file = /var/run/rsync.lock #支持max connections参数的锁文件
[tuwei] #模块名称,自定义。
path=/rsydata #服务端数据路径
ignore errors #忽略同步过程中的错误
read only=false
list=false
hosts allow=192.168.1.0/24 ##允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号
隔开
hosts deny =0.0.0.0/32 #禁止数据同步的客户端IP地址,可以设置多个
auth users=rsync_backup ##执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
secrets file=/etc/rsync.password #用户认证配置文件
配置文件完成,可以根据实际需要配置多个模块。
3.创建服务端路径与用户认证文件
mkdir /rsydata &&touch /etc/rsync.password
echo "rsync_backup:tuwei199116">/etc/rsync.password ##要配置用户和密码,用户名为配置文件中的认证用户。该文件中内容不要有空格。
[root@backupserver tuwei]# cat /etc/rsync.password
rsync_backup:tuwei199116
4.由于该认证文件中有密码信息,需要修改权限。
[root@backupserver tuwei]# chmod 600 /etc/rsync.password
[root@backupserver tuwei]# ls -l /etc/rsync.password
-rw------- 1 root root 25 Apr 16 15:04 /etc/rsync.password
只有root用户有读写权限。
5.运行rsync服务并将rsync服务加入开机自启动。
rsync --daemon
[root@backupserver tuwei]# ps -ef |grep rsync
root 2045 1 0 15:20 ? 00:00:00 rsync --daemon
加入开机自启动 echo "/usr/bin/rsync --daemon">>/etc/rc.local
[root@backupserver tuwei]# netstat -tnlp |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2045/rsync
tcp 0 0 :::873 :::* LISTEN 2045/rsync
873端口为rsync服务默认端口。
[root@backupserver tuwei]# lsof -i tcp:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 2045 root 4u IPv4 13937 0t0 TCP *:rsync (LISTEN)
rsync 2045 root 5u IPv6 13938 0t0 TCP *:rsync (LISTEN)
至此服务端配置完成。
2.客户端(传送数据)的配置
1.编辑认证文件vim /etc/rsync.password,只保存密码
[root@backupclient ~]# cat /etc/rsync.password
tuwei199116
2.修改权限 chmod 600 /etc/rsync.password
测试验证
先来看下服务端。
[root@backupserver rsydata]# ll
total 0
无数据。
客户端/tmp/tuwei/目录下文件。
[root@backupclient tuwei]# pwd
/tmp/tuwei
[root@backupclient tuwei]# ll
total 0
-rw-r--r--. 1 root root 0 Apr 16 17:13 1
-rw-r--r--. 1 root root 0 Apr 16 17:13 10
-rw-r--r--. 1 root root 0 Apr 16 17:13 2
-rw-r--r--. 1 root root 0 Apr 16 17:13 3
-rw-r--r--. 1 root root 0 Apr 16 17:13 4
-rw-r--r--. 1 root root 0 Apr 16 17:13 5
-rw-r--r--. 1 root root 0 Apr 16 17:13 6
-rw-r--r--. 1 root root 0 Apr 16 17:13 7
-rw-r--r--. 1 root root 0 Apr 16 17:13 8
-rw-r--r--. 1 root root 0 Apr 16 17:13 9
将客户端中/tmp/tuwei下的内容同步到服务端。
[root@backupclient tuwei]# rsync -avzP /tmp/tuwei/ rsync_backup@192.168.1.10::tuwei --password-file=/etc/rsync.password
sending incremental file list
./
1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=9/11)
10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=8/11)
2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=7/11)
3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=6/11)
4
0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=5/11)
5
0 100% 0.00kB/s 0:00:00 (xfer#6, to-check=4/11)
6
0 100% 0.00kB/s 0:00:00 (xfer#7, to-check=3/11)
7
0 100% 0.00kB/s 0:00:00 (xfer#8, to-check=2/11)
8
0 100% 0.00kB/s 0:00:00 (xfer#9, to-check=1/11)
9
0 100% 0.00kB/s 0:00:00 (xfer#10, to-check=0/11)
sent 450 bytes received 201 bytes 434.00 bytes/sec
total size is 0 speedup is 0.00
查看服务端情况
[root@backupserver rsydata]# pwd
/rsydata
[root@backupserver rsydata]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 16 17:13 1
-rw-r--r-- 1 root root 0 Apr 16 17:13 10
-rw-r--r-- 1 root root 0 Apr 16 17:13 2
-rw-r--r-- 1 root root 0 Apr 16 17:13 3
-rw-r--r-- 1 root root 0 Apr 16 17:13 4
-rw-r--r-- 1 root root 0 Apr 16 17:13 5
-rw-r--r-- 1 root root 0 Apr 16 17:13 6
-rw-r--r-- 1 root root 0 Apr 16 17:13 7
-rw-r--r-- 1 root root 0 Apr 16 17:13 8
-rw-r--r-- 1 root root 0 Apr 16 17:13 9
数据已从客户端同步到服务端,在实际生产中,我们可以将同步命令加到任务crontab中周期性执行。
本文出自 “学而思 思而学 然则进” 博客,请务必保留此出处http://tuwei.blog.51cto.com/11040555/1916448
利用rsync进行数据同步