用法
rsync是用来同步数据用的。安装方法是很简单的,直接yum install rsync即可。
1 | yum install rsync -y |
其是有2个传输认证模式的,一种是通过ssh,另一种是通过daemon方式。长期使用的话,建议使用daemon;临时使用,可以选择通过ssh的方式来处理。如果需要使用ssh+shell方式同步数据,可以使用ssh-keygen生成密匙或者使用sshpass来实现。
注意 : 与 :: 的区别,一个冒号表示通过ssh的方式登陆shell,二个冒号就是使用daemon方式。
1 | Usage: rsync [OPTION]... SRC [SRC]... DEST |
参数
有非常多的参数,如下:
1 | -v, --verbose 详细模式输出。 |
最常用的选项组合是avzP,即压缩和显示部分信息,并以归档模式传输。另外从windows传输到linux系统时,控制文件权限的--chmod也是非常有用的。
rsync daemon用法
可以使用man rsyncd.conf或者rsync --daemon --help来查看帮助信息。以下是设置密码认证的写法:
1 | [cvs] |
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 | [root@xmxyk ~]#echo 'password' >/etc/rsyncd.secrets //写入密码 |
扩展
使用rsync + inotify可以实现实时同步;而lsyncd使用lua语言封装了前面说的2个工具。
使用yum install lsyncd之后,再修改/etc/lsyncd.conf配置文件,如下:
1 | settings { |
重启服务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来认证