rsync 2种登录认证协议
rsync 命令来同步系统文件之前要先登录remote 主机认证,认证过程中用到的协议有2种:ssh 协议和rsync协议
1. ssh 认证协议
- rsync server 端不用启动rsync的daemon进程,只要获取remote host的用户名和密码就可以直接 rsync 同步文件
- rsync server 端因为不用启动daemon进程,所以也不用配置文件 /etc/rsyncd.conf
- ssh 认证协议跟scp 的原理是一样的,如果在同步过程中不需要收入密码就 用 ssh-keygen -t rsa 打通通道
这种方式默认是省略了 -e ssh 的,与下面等价:
rsync -avz /SRC -e ssh root@172.17.256.211:/DEST #-a 文件宿主变化,时间戳不变 -z:压缩数据传输
当遇到要修改端口的时候,我们可以:
rsync -avz /SRC -e "ssh -p36000" root@172.17.256.211:/DEST #修改了ssh 协议的端口,默认是22
2. rsync 认证协议
- rsync 认证协议,需要在rsync server端启动daemon进程,并设置对应的配置文件: /etc/rsyncd.conf
- rysnc 认证协议,如果不需要输入密码需要设置下面的配置:
cat /etc/rsync/rsync.secrets
admin:pass-for-admin #用户名:口令
mark:pass-for-mark
- /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
uid = root
gid = root
use chroot = no
secrets file = /etc/rsync.secrits
hosts allow = 192.168.0.0/16
0/24
[modual] #定义的模块,在rsync的命令中不用写决定路径了
path = /disk2/pub/club
comment= club pub
auth users = club
timeout = 600
read only = no
list = no
rsync 2种协议用法:
rsync -av /SRC rsync://root@172.17.256.211:36000/modual/DestPath
注意:这条语句显示的指明了使用rsync认证协议,port后的modual是rsync服务端配置文件rsyncd.conf
里面配置的模块名,模块里面会包含一些用户名、密码、路径等认证信息。
rsync -av /SRC --port=36000 root@172.17.256.211::modual/DestPath
注意:这种写法不需显示指定 rsync 协议,而是根据 :: 来识别的,端口自己用 --port 指定。
而且这里 modual 前面没有 / 的。
3. scp rsync 同步文件时的maxconnections 最大连接数和timeout时间的配置
有时一个集群的很多机器会同时【同一时间的cron任务】从一台机器上面rsync 或者scp 数据;此时链接数占满了,
后面的机器会一直等待,如果timeout时间设置的比较小,会让一些机器连接失败从来获取数据失败;如果脚本中没有
retry 的容错,那此次同步数据文件的任务就失败了
- ssh
vim /etc/ssh/sshd_config
UseDNS no
PidFile /var/run/sshd.pid
MaxStartups 10 #统一时间最大连接数是10个 #可以改成 1000
LoginGraceTime 1m #ssh 登录机器的timeout 可以改成10m/600s 【如果用户不能成功登录,LoginGraceTime 之后就失败了】
- rsync
如果rsync 用的ssh 协议认证,那配置跟ssh 登录的配置一样
如果rsync 用的rsync 协议认证,那注意下面的配置文件修改
/etc/rsyncd.conf
max connections = 2
4. rsync 还可以设置宽带设置
rsync 同步大数据容易把宽带打满了,所以可以设置带宽
5. rsync 常用命令
rsync -e "ssh -l admin -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ConnectionAttempts=5 -o BatchMode=yes" -az --bwlimit 15360 srchost:/tmp/testdir /tmp/' #1. 免交互 2. 限速: --bwlimit 3. -e 选项