rsync使用方法以及相关实例

用法

rsync是用来同步数据用的。安装方法是很简单的,直接yum install rsync即可。

1
2
3
yum install rsync -y
systemctl start rsyncd
systemctl enable rsyncd

其是有2个传输认证模式的,一种是通过ssh,另一种是通过daemon方式。长期使用的话,建议使用daemon;临时使用,可以选择通过ssh的方式来处理。如果需要使用ssh+shell方式同步数据,可以使用ssh-keygen生成密匙或者使用sshpass来实现。

注意 : 与 :: 的区别,一个冒号表示通过ssh的方式登陆shell,二个冒号就是使用daemon方式。

1
2
3
4
5
6
7
8
9
Usage: rsync [OPTION]... SRC [SRC]... DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.

参数

有非常多的参数,如下:

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
-v, --verbose          详细模式输出。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于 -rlptgoD 这些参数。
-r, --recursive 对子目录以递归模式处理。
-p, --perms 保持文件权限。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-l, --links 保留软链结。

-e, --rsh=COMMAND 指定使用 rsh, ssh 方式进行数据同步。
--rsync-path=PATH 指定远程服务器上的 rsync 命令所在路径信息。
--delete 删除那些 DST 中 SRC 没有的文件。
--delete-excluded 同样删除接收端那些被该选项指定排除的文件。
--ignore-errors 即使出现 IO 错误也进行删除。
--force 强制删除目录,即使不为空。
--progress 显示传输过程。
-P 等同于 -partial -progress,可以实现分段传输。
-z, --compress 对备份的文件在传输时进行压缩处理。
--exclude=PATTERN 指定排除不需要传输的文件模式。
--include=PATTERN 指定不排除而需要传输的文件模式。
--exclude-from=FILE 排除 FILE 中指定模式的文件。
--include-from=FILE 不排除 FILE 指定模式匹配的文件。
--address 绑定到特定的地址。
--config=FILE 指定其他的配置文件,不使用默认的 rsyncd.conf 文件。
--port=PORT 指定其他的 rsync 服务端口。
--log-format=formAT 指定日志文件格式。
--password-file=FILE 从 FILE 中得到密码。
--bwlimit=KBPS 限制 I/O 带宽,KBytes per second。

--chmod=Dg+s,ug+w,Fo-w,+X 指定传输后的文件权限
语法为[D|F][ugo][+-][rwxs],表示为目录(D)和文件(F)增加(+)减少(-)权限,u是user权限,g是group权限,o是other权限

最常用的选项组合是avzP,即压缩和显示部分信息,并以归档模式传输。另外从windows传输到linux系统时,控制文件权限的--chmod也是非常有用的。

rsync daemon用法

可以使用man rsyncd.conf或者rsync --daemon --help来查看帮助信息。以下是设置密码认证的写法:

1
2
3
4
5
6
7
8
9
10
[cvs]
path = /data/cvs
comment = CVS repository (requires authentication)
auth users = tridge, susan
secrets file = /etc/rsyncd.secrets

The /etc/rsyncd.secrets file would look something like this:

tridge:mypass
susan:herpass

ssh示例

使用-e 'ssh -p 28871'方法来指定ssh的远程端口进行传输数据。-e参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器,当然也可以设置成使用默认的ssh来连接,但是这样我们就可以加入ssh的参数了。

1
2
3
4
5
6
7
8
9
10
[root@xmxyk host]# rsync -avz -e 'ssh -p 28871' default.tar.gz root@www.xmxyk.net:/tmp
The authenticity of host '[www.xmxyk.net]:28871 ([144.34.167.181]:28871)' can't be established.
RSA key fingerprint is dd:c5:f3:04:6f:9a:22:1f:22:b4:5f:76:1c:9e:13:fb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[www.xmxyk.net]:28871' (RSA) to the list of known hosts.
sending incremental file list
default.tar.gz

sent 9691630 bytes received 31 bytes 1292221.47 bytes/sec
total size is 9688294 speedup is 1.00

daemon实例

在一台机器上面新建配置文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@xmxyk ~]#cat /etc/rsyncd.conf 
use chroot = false
max connections = 4
log file = /var/log/rsyncd.log
pid file = /tmp/rsyncd.pid
lock file = /tmp/rsyncd.lock
uid = root
gid = root
[backup]
path = /backup/
hosts allow = 172.96.199.1
strict modes = false
read only = true
list = false
auth users = tridge
secrets file = /etc/rsyncd.secrets
[root@xmxyk ~]#echo 'tridge:password' >/etc/rsyncd.secrets // 写入用户名和密码
[root@xmxyk ~]#chmod 600 /etc/rsyncd.secrets
[root@xmxyk ~]#systemctl restart rsyncd

上面是开了一个backup模块,只允许 172.96.199.1 这个IP连接,并且是只读的。如果有开了iptables,就需要将tcp 873端口放开。

注意:如果需要上传文件到rsync服务器的话,必须将read only设置为false,不能会一直报错。

在另一台机器上面同步数据,即将远端的数据拉取到本机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@xmxyk ~]#echo 'password' >/etc/rsyncd.secrets //写入密码
[root@xmxyk ~]#chmod 600 /etc/rsyncd.secrets
//
[root@xmxyk bk]# rsync -auvzP --delete tridge@1.2.3.4::backup /home/bk/host/ --password-file=/etc/rsyncd.secrets
receiving incremental file list
./
bbs.xmxyk.net.tar.gz
56614188 100% 75.30MB/s 0:00:00 (xfer#1, to-check=5/7)
default.tar.gz
9688294 100% 11.07MB/s 0:00:00 (xfer#2, to-check=4/7)
pescms.8994.cn.tar.gz
7590642 100% 7.22MB/s 0:00:01 (xfer#3, to-check=3/7)
survery.8994.cn.tar.gz
84626470 100% 75.78MB/s 0:00:01 (xfer#4, to-check=2/7)
wumingx.cn.tar.gz
318942506 100% 74.95MB/s 0:00:04 (xfer#5, to-check=1/7)
www.xmxyk.net.tar.gz
148603290 100% 73.85MB/s 0:00:01 (xfer#6, to-check=0/7)

sent 144 bytes received 626326957 bytes 73685541.29 bytes/sec
total size is 626065390 speedup is 1.00

扩展

使用rsync + inotify可以实现实时同步;而lsyncd使用lua语言封装了前面说的2个工具。

使用yum install lsyncd之后,再修改/etc/lsyncd.conf配置文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}
sync {
default.rsync,
source = "/cache1/",
target = "tridge@1.2.3.4::backup",
delete= false,
exclude = { ".*" },
delay = 10,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.passwd",
_extra = {"--bwlimit=2000"}
}
}

重启服务systemctl restart lsyncd,测试有没有正常同步即可。

settings参数说明:

  • logfile 定义日志文件
  • stausFile 定义状态文件
  • nodaemon=true 表示不启用守护模式,默认
  • statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
  • inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
  • maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
  • maxDelays 累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到

sync参数说明:一般第一个参数指定lsyncd以什么模式运行:rsync、rsyncssh、direct三种模式:

  • default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
  • default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;
  • default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证

参考资料

rsync同步的艺术

rsync+ssh 无服务端无密码同步配置

Linux运维:rsync+inotify实时同步

真正的inotify+rsync实时同步 彻底告别同步慢

官网:http://rsync.samba.org/

https://github.com/axkibe/lsyncd

lsyncd-实时同步(镜像)守护程序

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/linux/rsync-tutorial.html
  • 本文主题: rsync使用方法以及相关实例
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%