Rsync是Linux平台下的主机与主机间的数据同步工具,相比较FTP,Rsync可以进行差异传输,效率较高。
简介
Rsync分为服务端和客户端两部分:服务端需要以deamon方式运行rsync服务,并同时启动xinetd服务,默认端口为873;客户端则用于发起rsync连接,安装rsync即可。客户端会向服务端发起连接,并向提供rsync服务内建的用户名和密码,服务器验证通过后,即开始文件传输,传输过程中,会先对比文件的大小、属性、权限、MD5值等信息,如果两端文件不一致,则按要求同步文件的区别块。
服务端搭建
步骤一、安装
大多数Linux操作系统都自带了rsync服务,可以通过命令查看:
rpm -qa|grep rsync
如果想升级或安装,可以使用:
yum -y install rsync
或使用源码包
wget https://download.samba.org/pub/rsync/rsync-3.2.3.tar.gz
tar -xzf rsync-3.2.3.tar.gz
cd rsync-3.2.3
./configure --prefix=/usr/local/rsyncd
make && make install
步骤二、配置
确认安装完成后,在/etc目录下为rsync服务创建rsyncd文件夹,并在其下分别创建三个文件rsyncd.conf
、rsyncd.secredts
、rsyncd.motd
:
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #服务器配置文件
touch /etc/rsyncd/rsyncd.secrets #用户名密码文件
touch /etc/rsyncd/rsyncd.motd #欢迎文件
chmod 600 /etc/rsyncd/rsyncd.secrets #欢迎文件,权限需要赋值为600
rsyncd.conf:
# GLOBAL OPTIONS
# 欢迎文件配置(可省略)
#motd file=/etc/rsyncd.motd
# 是否开启日志传输功能(可省略)
transfer logging=yes
# 日志文件地址(可省略)
log file=/var/1og/rsyncd.1og
# 进程文件配置
pid file=/var/run/rsyncd.pid
# 锁文件配置
lock file=/var/lock/rsync.lock
# 监听端口号配置(可省略)
port=873
# 服务器监听地址配置(可省略)
address=192.168.150.128
# 守护进程所属的uid,默认是nobody,可能会碰到文件或目录权限问题
uid=root
# 守护进程的gid
gid=root
#设置user chroot为yes后,rsync会首先进行chroot设置,将根映射到path参数路径下,对客户端而言,系统的根就是path参数所指定的路径。但这样做需要root权限,并且在同步符号连
接资料时仅会同步名称,而内容将不会同步。
use chroot=no
# 是否允许客户端上传数据。
read only=no
# 设置并发连接数,0代表无限制。超出并发数后,如果依然有客户端连接请求,则将会收到稍后重试的提示消息。
max connections=10
# 模块,Rsync通过模块定义同步的目录,模块以[name]的形式定义,这与Samba定义共享目录是一样的效果。在Rsync中也可以定义多个模块
[common]
# comment定义注释说明字串
comment=Web content
# 同步目录的真实路径通过path指定
path=/common
# 忽略一些IO错误(可忽略)
ignore errors
# exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据(可忽略)
# exclude=test/
# 设置允许连接服务器的账户,账户可以是系统中不存在的用户
auth users=yufu,jango
# 设置密码验证文件名称,注意该文件的权限要求为只读,建议权限为600,与auth user配套使用
secrets file=/etc/rsyncd.secrets
# 设置允许哪些主机可以同步数据,可以是单个IP,也可以是网段,多个IP与网段之间使用空格分隔(可省略)
hosts allow=192.168.150.0/255.255.255.0
# 设置拒绝所有(除hosts allow定义的主机外)
hosts deny=*
#客户端请求显示模块列表时,本模块名称是否显示,默认为yes
list=yes
rsyncd.secrets:
# 格式【用户名:密码】
yufu:123456
rsyncd.motd:
echo "hi"> /etc/rsyncd/rsyncd.motd
步骤三、重启服务端
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
客户端使用
客户端需要安装rsync服务,安装步骤参考服务端搭建的步骤一,所以直接进入同步环节,假设服务器端IP为192.168.150.128
,客户端IP为192.168.32.129
,则:
- 客户端
192.168.150.129
从服务端192.168.150.128
同步/data到本地目录/template
rsync -avz rsyncuser@192.168.150.128::data /template #这种方式会将data文件夹复制到/template下
rsync -avz rsyncuser@192.168.150.128::data/ /template #这种方式只会将data文件夹中的内容复制到/template下,不会创建data目录
- 客户端
192.168.32.129
同步/template到服务端192.168.150.128
的/data
rsync -avz /template/ rsyncuser@192.168.150.128::data
在使用时,我们发现每次都需要输入密码,为此,我们可以创建密码文件rsync.pass文件,将密码存进去,这样通过--password-file
参数,就可以省去每次都输入密码的麻烦:
echo "123456">rsync.pass
chmod 600 rsync.pass
rsync -avz --password-file=rsync.pass yufu@192.168.150.128::data /template