rsync一般情况下会系统便会有这个软件,如果没有请自行安装。
rsync的三种工作模式:
1、单个主机本地进行数据传输 类似与cp命令 另外rsync还有删除功能
2、借助与rcp,ssh通道来进行传输 类似与scp功能
rsync -avz /etc/hosts -e ssh 192.168.12.246:/etc/init.d/
-a:保持文件自身属性 -z:压缩传输 -e:使用通信协议 -v:输出给出进度提示
将 本地的/etc/hosts文件 借助ssh通道来传输到192.168.12.246的/etc/init.d/目录下
3、以守护进程(socket)方式进行传输
当以守护进程的方式传输,需要新建该文件:vim /etc/rsyncd.conf
uid = rsync 用户
gid = rsync 组
use chroot = no
max connections = 200 连接数
timeout = 300 超时退出
pid file = /var/run/rsyncd.pid 日志
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[lzk]
path = /usr/local/tools/ 同步的目录
ignore errors 忽略输出时错误提示
read only = false 读写
list = false
hosts allow = 192.168.12.0/24 允许的网段
hosts deny = 0.0.0.0/32
auth users = slave 认证的用户
secrets file = /etc/rsync.password 将客户端用户的密码写入该文件,不会在要求密码
当创建写好配置文件时使用rsync --daemon启动服务 查看873端口
[root@node1 ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
rsync 17160 root 4u IPv6 175668 TCP *:rsync (LISTEN)
rsync 17160 root 5u IPv4 175669 TCP *:rsync (LISTEN)
在配置文件中我们定义的用户是rsync,所以我们现在创建虚拟用户
useradd rsync -s /sbin/nologin
将我们共享的文件目录赋予用户权限
chown rsync.rsync /usr/local/tools/
在配置文件中定义了密码文件,我们将认证用户和密码写入该文件中
echo "slave:lzk.1995" > /etc/rsync.password
由于该文件是有我们认证的信息,所以要给最小的权限最安全 chmod 600 /etc/rsync.password
这时,我们的客户端就配置好了。
我们在客户端也需要创建rsync.password文件,当同步数据时,可以不显示密码提示
echo "lzk.1995" > /etc/rsync.password
给该文件赋予最小最安全的权限
chmod 600 /etc/rsync.password
配置到此,我们便可以通过客户端像服务器端推拉数据了
[root@node2 /]# rsync -avz slave@192.168.12.237::lzk /usr/local/tls/
Password:
可以看出现在还是需要密码,我们添加格外参数
[root@node2 /]# rsync -avz slave@192.168.12.237::lzk /usr/local/tls/ --password-file=/etc/rsync.password
receiving file list ... done
./
memeda
sent 125 bytes received 870686 bytes 1741622.00 bytes/sec
total size is 789158893 speedup is 906.23
注意:sync -avz slave@192.168.12.237::lzk /usr/local/tls/ --password-file=/etc/rsync.password
上面标红的字母在ip后面是两个冒号,scp则是一个。另外lzk和服务器端配置文件中[lzk]是对应的。