良许Linux教程网 干货合集 搭建rsync服务器具体步骤

搭建rsync服务器具体步骤

rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输,下面为大家分享一下搭建rsync服务器具体步骤。

搭建rsync服务器具体步骤
img

系统环境

系统平台:CentOS 6
rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm
rsync 服务器:TS-DEV (172.16.1.135)
rsync 客户端:TS-CLIENT (172.16.1.136)

服务器端安装rsync服务

检查rsync 是否已经安装

# rpm -qa|grep rsync

下载RPM包

# wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm

安装rsync

# rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm

配置 rsync 服务

配置 rsync 服务器的步骤

•首先要选择服务器启动方式 •对于负荷较重的 rsync 服务器应该使用独立运行方式 •对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式 •创建配置文件 rsyncd.conf •对于非匿名访问的 rsync 服务器还要创建认证口令文件

以 xinetd 运行 rsync 服务

CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。要配置以 xinetd 运行的 rsync 服务需要执行如下的命令

# chkconfig rsync on
# service xinetd restart

独立运行 rsync 服务

最简单的独立运行 rsync 服务的方法是执行如下的命令

# /usr/bin/rsync --daemon

您可以将上面的命令写入 /etc/rc.local 文件以便在每次启动服务器时运行 rsync 服务。

配置文件rsyncd.conf

两种 rsync 服务运行方式都需要配置 rsyncd.conf,配置文件 rsyncd.conf 默认在 /etc 目录下,为了将所有与 rsync 服务相关的文件放在单独的目录下,可以执行如下命令:

# mkdir /etc/rsyncd
# touch /etc/rsyncd/rsyncd.conf
# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为: •模块以 [模块名] 开始 •参数配置行的格式是 name = value ,其中 value 可以有两种数据类型: •字符串(可以不用引号定界字符串) •布尔值(1/0 或 yes/no 或 true/false) •以 # 或 ; 开始的行为注释 •\ 为续行符

全局参数

在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置
CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:

a. 基本模块参数

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置
CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

b. 模块控制参数

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

c. 模块文件筛选参数

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置
CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

•一个模块只能指定一个exclude 参数、一个include 参数。 •结合 include 和 exclude 可以定义复杂的exclude/include 规则 。 •这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。

d. 模块用户认证参数

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置
CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

•rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。 •rsync 认证口令文件中每一行指定一个 用户名:口令 对,格式为: username:passwd •一般来说口令最好不要超过8个字符。若您只配置匿名访问的 rsync 服务器,则无需设置上述参数。

e. 模块访问控制参数

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置
CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

客户主机列表定义可以是以下形式: •单个IP地址。例如:192.168.0.1 •整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0 •可解析的单个主机名。例如:centos,centos.bsmart.cn •域内的所有主机。例如:.bsmart.cn •“”则表示所有。 •多个列表项要用空格间隔。

f. 模块日志参数

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。

可以使用的日志格式定义符如下所示: •%a – 远程IP地址 •%h – 远程主机名 •%l – 文件长度字符数 •%p – 该次 rsync 会话的 PID •%o – 操作类型:”send” 或 “recv” •%f – 文件名 •%P – 模块路径 •%m – 模块名 •%t – 当前时间 •%u – 认证的用户名(匿名时是 null) •%b – 实际传输的字节数 •%c – 当发送文件时,记录该文件的校验码

rsync 服务器应用案例

在服务器端TS-DEV上配置rsync 服务

a. 编辑配置文件

# vi /etc/rsyncd/rsyncd.conf

# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script
# GLOBAL OPTIONS
uid = root                        
gid = root                                  

use chroot = no                            

read only = yes                            

#limit access to private LANs
hosts allow=172.16.0.0/255.255.0.0 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
hosts deny=*                                
max connections = 5                      

pid file = /var/run/rsyncd.pid            

secrets file = /etc/rsyncd/rsyncd.secrets  
#lock file = /var/run/rsync.lock          

motd file = /etc/rsyncd/rsyncd.motd        

#This will give you a separate log file
log file = /var/log/rsync.log              

#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes                    

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

# MODULE OPTIONS
[davidhome]                              
path = /home/david/                      
list=yes                                  
ignore errors                              
auth users = david                          
comment = David home                  
exclude = important/

[chinatmp]
path = /tmp/china/
list=no
ignore errors
auth users = china
comment = tmp_china

b. 建立/etc/rsyncd/rsyncd.secrets文件 # vim /etc/rsyncd/rsyncd.secrets

david:asdf           #格式   用户名:口令
china:jk               #该用户不要求是系统用户

c. 为了密码的安全性,我们把权限设为600

# chown root:root /etc/rsyncd/rsyncd.secrets
# chmod 600 /etc/rsyncd/rsyncd.secrets

d. 建立连接到服务器的客户端看到的欢迎信息文件/etc/rsyncd/rsyncd.motd # vim /etc/rsyncd/rsyncd.motd

+++++++++++++++++++++++++++
+       David Camp        +
+++++++++++++++++++++++++++

e. 启动rsync

# /etc/init.d/xinetd restart

f. 查看873端口是否起来

# netstat -an | grep 873

如果rsync启动成功的话可以看到873端口已经在监听了。 CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置 g. 服务器端文件详细 CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置

客户端配置

a. 客户端安装rsync

# yum -y install rsync

b. 通过rsync客户端来同步数据

场景一:

在客户端上面:

# rsync -avzP david@172.16.1.135::davidhome /tmp/david/

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置 Password: 这里要输入david的密码,是服务器端提供的,在前面的例子中,我们用的是 asdf,输入的密码并不显示出来;输好后就回车;

注: 这个命令的意思就是说,用david 用户登录到服务器上,把davidhome数据,同步到本地目录/tmp/david/上。当然本地的目录是可以你自己定义的,比如 dave也是可以的;当你在客户端上,当前操作的目录下没有davidhome这个目录时,系统会自动为你创建一个;当存在davidhome这个目录中,你要注意它的写权限。

说明: -a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件; -z 传输时压缩; -P 传输进度; -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

场景二:

# rsync -avzP  --delete david@172.16.1.135::davidhome  /tmp/david/

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置 这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 /tmp/david/目录中有服务器上不存在的文件,则删除。最终目的是让/tmp/david/目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;

场景三:

# rsync -avzP  --delete  --password-file=/tmp/rsync.password  david@172.16.1.135::davidhome  /tmp/david/

CentOS6 下rsync服务器配置CentOS6 下rsync服务器配置 这次我们加了一个选项 –password-file=rsync.password ,这时当我们以david用户登录rsync服务器同步数据时,密码将读取 /tmp/rsync.password 这个文件。这个文件内容只是david用户的密码。我们要如下做;

# touch /tmp/rsync.password
# chmod 600 /tmp/rsync.password
# echo "asdf"> /tmp/rsync.password
# rsync -avzP  --delete  --password-file=/tmp/rsync.password  david@172.16.1.135::davidhome  /tmp/david/

注: 这样就不需要密码了;其实这是比较重要的,因为服务器通过crond 计划任务还是有必要的;

5.3. rsync 客户端自动与服务器同步数据

编辑crontab # crontab -e 加入如下代码:

10 0 * * * rsync -avzP  --delete  --password-file=/tmp/rsync.password  david@172.16.1.135::davidhome  /tmp/david/

表示每天0点10分执行后面的命令。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部