linux 上安装并配置 rsync

前段时间负责给两台服务器之间做配置同步,偶然发现这款好用的工具。本文主要介绍一下 rsync 的安装及配置,当然还有在这中间踩的坑。

1.什么是rsync

rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。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等工具。

2.rsync的基本特点

1.可以镜像保存整个目录树和文件系统;

2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

3.无须特殊权限即可安装;

4.优化的流程,文件传输效率高;

5.可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;

6.支持匿名传输

3.rsync安装

1
2
sudo apt-get install rsync # ubuntu
sudo yum install rsync # centos

4.服务器端配置

4.1 基本配置文件

默认配置文件位置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/etc/rsyncd.conf # 配置文件
/etc/rsync.pwd # 授权用户信息
# 全局参数
# 运行rsync守护进程的用户
uid = root
# 运行rsync守护进程的组
gid = root
# 不使用chroot
use chroot = no
# 最大连接数为4
max connections = 4
# 是否检查口令文件的权限
strict modes = yes
# 默认端口873
port = 873
# 下面这些绿色文件是安装完rsync服务后自动生成的文件
# pid文件的存放位置
pid file = /var/run/rsyncd.pid
# 锁文件的存放位置
lock file = /var/run/rsync.lock
# 日志记录文件的存放位置
log file = /var/log/rsyncd.log
# 模块参数
# 这里是认证的模块名,在client端需要指定
[app]
path = app_path
# 这个模块的注释信息
comment = deploy
# 只读
read only = yes
# 是否允许列文件
list = yes
# 密码和用户名对比表,密码文件自己生成
secrets file = /etc/rsync.pas
# 认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
auth users = qiaowen
# 可以忽略一些无关的IO错误
ignore errors
# 允许主机
# hosts allow = 192.168.1.1,10.10.10.10
# 禁止主机
# hosts deny = 0.0.0.0/0
# transfer logging = yes

4.2 配置rsync密码

在上边的配置文件中已经写好路径(/etc/rsync.pas; 名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)

1
2
3
4
echo username:password > /etc/rsync.pas
# /etc/rsync.pas 的权限一定要是 600
chown 600 /etc/rsync.pas

4.3 配置欢迎信息(可有可无)

1
2
3
4
echo Welcome to use the rsync services! > /etc/rsyncd.motd
# /etc/rsyncd.motd 的权限一定要是 600
chown 600 /etc/rsyncd.motd

4.4 rsync服务相关配置

服务端由于 rsync 默认是由超级守护进程xinetd 管理的,所以我们必须先安装 xinetd

安装并启动 xinetd

1
2
yum install xinetd
service xinetd start

修改 xinetd 管理 rsync 的配置文件

1
vim /etc/xinetd.d/rsync

把原来的 disable = yes 改成 disable = no ,修改后文件如下

1
2
3
4
5
6
7
8
9
10
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

4.5 让配置生效

1
service xinetd restart

5.启动 rsync

rsync服务端启动的两种方法

1
2
3
4
5
6
7
1、直接启动rsync服务端
rsync –daemon
2、使用xinetd超级进程启动rsync服务端
/etc/rc.d/init.d/xinetd reload

6.配置 rsync 为自启动服务

加入 rc.local

在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync –daemon加载进去。

1
2
3
4
5
vim /etc/rc.local
加入一行
rsync --daemon

或者设置随系统启动rsync(可以不设置随系统启动)

1
chkconfig rsync on

7.检查rsync

1
2
netstat -a | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN

8.配置rsync client

从rsync server端取文件(会先删除 /home/app 下的文件)

1
rsync -vzrtopg --progress --delete username@host::app /home/app --password-file=/etc/rsync.pas

向rsync server端上传文件

1
rsync -vzrtopg --progress --password-file=/etc/rsync.pas /home/app username@host::app

这个命令将把本地机器 /home/app 目录下的所有文件(含子目录)全部备份到 rsync server 的 app 模块的设定的备份目录下。

请注意如果路径结束后面带有”/”,表示备份该目录下的东东,但不会创建该目录,如不带”/”则创建该目录。