rsync使用方法以及相关实例

用法

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

其是有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权限

最常用的选项组合是”avz”,即压缩和显示部分信息,并以归档模式传输。另外从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
[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

[root@xmxyk ~]#rsync --daemon
failed to create pid file /tmp/rsyncd.pid: File exists

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@xmxyk bk]# rsync -auvzP -R --delete 144.34.167.1::backup /home/bk/host/
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个工具,其官方为https://github.com/axkibe/lsyncd ,如有需求,可自行查资料使用。

参考资料

https://segmentfault.com/a/1190000015669114

rsync+ssh 无服务端无密码同步配置:https://blog.imdst.com/rsyncssh-pei-zhi-wu-mi-ma-tong-bu/

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

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