更新:本篇选择独立启动模式
选择rsync服务器启动方式
- rsync服务器负载比较高,则使用独立启动模式
- rsync服务器负责较低,使用xinetd运行方式
Tips:由于需要将线上大量数据迁移至本地,直接使用ftp或scp会很不方便,使用rsync可以有断点续传功能,而且搭建起来十分快捷方便。
环境
- 本地CentOS release 6.7
- 线上CentOS release 6.5
- 这里是将线上数据拉至本地,本地主机在局域网中 ,并没有单独的公网IP,故线上服务器做rsync的服务端,本地PC做rsync的客户端
服务端配置
1
2
3
4
5
6
|
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #主配置文件
touch /etc/rsyncd/rsyncd.secrets #客户端连接时使用的用户和密码
touch /etc/rsyncd/rsyncd.motd #服务端提示信息文件
chmod 600 /etc/rsyncd/rsyncd.secrets
chown root:root /etc/rsyncd/rsyncd.secrets
|
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
|
uid = root
gid = root
use chroot = no
read only = yes #只读,不让客户端上传文件到服务器
address = 203.66.131.14 #服务端的IP,写错将无法启动进程
port = 873
#hosts allow = 192.168.1.0/24 172.16.0.0/255.255.0.0
hosts allow = 0.0.0.0/0.0.0.0
hosts deny = *
max connections = 5
pid file = /var/run/rsyncd.pid
motd file = /etc/rsyncd/rsyncd.motd
secrets file = /etc/rsyncd/rsyncd.secrets
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[mytmp]
path = /data/nfsd/backup/arvon_backup
list = yes
ignore errors
auth users = rsync #只有rsyncd.secrets文件中的zhang3用户可以同步此目录
[townhome]
path = /home/town
list = no #服务器上同步数据的目录在服务器模块上列出来
ignore errors #忽略IO错误
auth users = rsync #只有rsyncd.secrets文件中的town用户可以同步此目录
comment = hitown #客户端连接时的提示
|
1
2
|
[hello@host]$ sudo cat /etc/rsyncd/rsyncd.secrets
rsync:123456
|
1
2
3
4
5
|
# vi /etc/rsyncd/rsyncd.motd
################################
# Go !!!
#欢迎信息,并无卵用
################################
|
1
2
|
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf #启动服务
echo '/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf' >> /etc/rc.local #设置开机启动
|
客户端配置
1
2
3
|
echo 123456 > /etc/rsync.password #将rsync的密码写入本地
#这个rsync.password文件可随意放,不过建议放在etc下
chmod 600 /etc/rsync.password #重要,rsync会检查权限,如果不是600会报出错误
|
测试&使用
1
2
|
rsync --list-only --password-file=/etc/rsync.password rsync@rsync_server_ip::mytmp
#这个mytmp是体现在主配置 文件的,也就是/etc/rsyncd/rsyncd.conf
|
1
2
3
|
#rsync -auvzP --delete --password-file=/etc/rsync.password rsync@rsync_server_ip::mytmp /your/want/path
#由于这里只是需要将线上数据拉到本地,并不需要完全一致,所以可以不用--delete参数,能不用则不用,删除总归是危险操作
rsync -auvzP --password-file=/etc/rsync.password rsync@rsync_server_ip::mytmp /your/want/path
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-a 相当于-rlptgoD
-r是递归
-l是链接文件,意思是拷贝链接文件;
-p表示保持文件原有权限;
-t保持文件原有时间;
-g保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。
--delete 表示客户端的数据要与服务器端完全一致,如果客户端目录里有服务器上不存在的文件,则删除。
#执行rsync同步时,慎用-z参数!一旦启用了-z参数,则数据在传输前会先经过压缩,如果文件比较大的话,压缩会很慢!进而出现,明明网速很快,却同步缓慢的情况。
|
排错
- 连接不上
直接都不出欢迎 界面,查看防火墙,发现问题
解决:
1
2
|
sudo iptables -nvL --line-number
sudo iptables -I INPUT 17 -p tcp -m tcp --dport 873 -j ACCEPT -m comment --comment "added by arvonfor rsync"
|
- 连接上,有报错
权限问题,反正我的是,来了个狠的,已ok,报错如下
@ERROR: auth failed on module xxx
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
解决:
1
|
chmod 600 -R /etc/rsyncd/
|
以上