利用rsync进行数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用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主要采用三种方法输出数据

  1. 本地传输。

  2. 远程shell传输

  3. 守护进程方式

一般前两种方式在企业中不常用,今天来介绍下第三种方式。

本次服务配置是在虚拟机中进行,镜像文件为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服务已经安装,无需再进行安装。

[[email protected] 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 ##要配置用户和密码,用户名为配置文件中的认证用户。该文件中内容不要有空格。

[[email protected] tuwei]# cat /etc/rsync.password 

rsync_backup:tuwei199116

4.由于该认证文件中有密码信息,需要修改权限。

[[email protected] tuwei]# chmod 600 /etc/rsync.password 

[[email protected] tuwei]# ls -l /etc/rsync.password 

-rw------- 1 root root 25 Apr 16 15:04 /etc/rsync.password

只有root用户有读写权限。

5.运行rsync服务并将rsync服务加入开机自启动。

  rsync --daemon

[[email protected] tuwei]# ps -ef |grep rsync

root      2045     1  0 15:20 ?        00:00:00 rsync --daemon

加入开机自启动 echo "/usr/bin/rsync --daemon">>/etc/rc.local

[[email protected] 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服务默认端口。

[[email protected] 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,只保存密码

[[email protected] ~]# cat /etc/rsync.password 

tuwei199116

2.修改权限 chmod 600 /etc/rsync.password

   测试验证

先来看下服务端。

[[email protected] rsydata]# ll

total 0

无数据。

客户端/tmp/tuwei/目录下文件。

[[email protected] tuwei]# pwd

/tmp/tuwei

[[email protected] 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下的内容同步到服务端。

[[email protected] tuwei]# rsync -avzP /tmp/tuwei/  [email protected]::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

查看服务端情况

[[email protected] rsydata]# pwd

/rsydata

[[email protected] 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进行数据同步的主要内容,如果未能解决你的问题,请参考以下文章

四.实时同步

利用inotify和rsync实现数据同步

inotify和rsync实现数据实时同步

rsync定时同步配置

inotify+rsync实现实时同步

inotify+rsync实现实时同步