故事背景:咱们公司是作新零售的,须要对发布的每台机器进行文件的同步更新,因此我这里作了一个小小的调研linux
技术调研:linux之间同步文件有两种方式rsync与scp。vim
sync和scp在文件夹均不存在时,执行时间相差不大,可是文件夹存在的状况下差别很大。缘由是scp是复制:若mas2文件不存在则新建,若存在则覆盖,若mas2上有而Dashboard主机没有,则不改变。能够理解为scp为“复制”。而rsync则在文件在存在于两主机时,比较两文件是够相同,相同的话,就什么都不作,若存在差别就直接更新。安全
简单的说rsync只对差别文件作更新。ssh
#### Rsync介绍
rsync是一款开源的备份工具,能够再不一样主机之间进行同步,实现全量和增量备份,适用于集中备份或异地备份等应用场景。
rsync监听端口:873
rsync运行模式:C/S
#### Rsync传输模式
- 本地模式
本地传输,主机内部进行数据传输(相似于cp命令)
- 远程模式
远程通道传输,经过ssh通道传输数据(相似scp命令)
- 守护进程模式
守护进程传输,不使用系统用户进行传输(安全性高) 工具
#### Rsync命令参数
-a 复制各类类型的文件(至关于-tropgDl)
-v 显示传输过程
-z 传输时进行压缩
-r 递归传输目录和子目录
-t 保持文件时间不变
-o 保持文件属主信息
-g 保持文件属组信息
-p 保持文件权限
-l 保持软链接
-P 显示同步进度及过程
-D 保持设备文件信息
--bwlimit=100 限速传输
--delete 源和目标数据保持一致
--partial 断点续传 ui
#### 安装rsync
`sudo apt-get install`通常机器好像都有
#### 服务端
1. 建立rsyncd.conf配置文件,sudo vim /etc/rsyncd.conf
`uid = ai #运行进程用户
gid = ai #运行用户组
port = 873 #监听端口
fake super = yes #无需rsync以root身份运行,容许接受数据
use chroot = no #禁锢推送数据至某个目录
max connections = 0 #最大链接数
timeout = 600 #超时时间
log file = /var/log/rsyncd.log #定义日志文件路径
#####################################
[backup] #模块名称
path = /backup #定义接收备份数据目录
ignore errors #忽略错误信息
read only = false #对备份数据可读写
list = false #不容许查看模块信息
auth users = test #定义虚拟用户,认证使用
secrets file = /etc/rsync.passwd #认证密码路径` spa
2. 建立rsync.passwd
`echo "test:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd 否则传输会报错`
3. 启动rsync
`rsync --daemon` 日志
#### 客户端
1. 建立rsync.passwd
`echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password 否则传输会报错` 递归
#### 实例(拉取)
`rsync -avz test@192.168.174.128::backup --password-file=/etc/rsyncd.password /tmp/backup/` 进程
#### 定时拉取 把拉取指令配置在客户端crontab便可