1 简介
rsync(remote synchronization)远程数据同步工具,可在两台服务器之间快速传递文件,由于rsync只传递目标服务和源服务器不同的数据,而不是全部文件传递,所以rsync传递数据的速度很快。另外,传递后的文件可以保存原文件的权限、时间、软硬链接。
(备注:文章中源服务器代表文件存储的原始机器,rsync使目标服务器从源服务同步内容,和源服务器保持内容一致)
2 原理
概述:
(0)服务器之间按照约定块大小和校验方式传输数据;
(1)目标服务器向源服务器(修改了文件的服务器)发送目标服务器所有文件信息的信息块,每个信息块包含校验和信息;
(2)源服务器接收到信息块数据,并和本地的信息块进行对比;
(3)将有差异的部分标记后发送给目标服务器;
(4)目标服务按照约定将差异文件修改到本地。
详细过程参看:https://www.haxi.cc/archives/Rsync%E4%BB%8B%E7%BB%8D.html
3 三种模式
3.1 本地模式
在本地拷贝文件
rsync /origin/src/path/ /taget/src/path/
3.2 shell模式
通过ssh隧道方式进行文件同步,第一个路径表示源服务路径,第二个路径表示目标服务器路径;
rsync /local/src/path/ usr@host:modelname/files/
上述表示本地向远程推送文件,命令中路径信息位置调换,则表示远程向本地拉取信息,后续rsync模式的路径也是同样的。
补充setfacl命令
#通过setfacl命令修改-m文件为某用户下的权限#
setfacl -m u:username:rwx /files
#查看xxx文件或文件夹的用户权限
getfacl xxx
setfacl、chmod、chown的区别:https://blog.51cto.com/9434538/1698231
本地向远程推文件,免密登录
本地操作
ssh-keygen -t rsa -b 2048
ssh-copy-id [email protected]
3.3 rsync模式
通过rsync协议传输数据,需要在远程机器中启动rsync服务。默认为873端口执行服务。
rsync /local/src/path/ usr@host::modelname/files/
免密登录方式
方式一:
修改登录者权限rsyncd.conf
address = xxx.xxx.xxx.xxx #绑定的ip,一般为本机器的ip
use chroot = no
#是否限定在该目录下(path)传输,
#如果为yes,在传输文件之前首先chroot到path参数所指定的目录下。
#是为了实现额外的安全保护,但需要用root权限,并且不能备份指向外部文件目录,
#当存在指向外部文件但软硬链接时,需要设置use chroot=no。
#默认情况下为yes
numeric ids = no
read only = no
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
[modelname]
uid = username #传输文件的用户
gid = groupname #传输文件的组
path = /search/files/ #规定了传输文件的路径
hosts allow = 10.0.0.0/8 #允许传输文件的网络,多个网络用空格隔开
dont compress = *.gz *.bz2 #当文件后缀名如左侧时,rsync不进行压缩
通过以下语句免密登录,modelname指向了path的路径,文件蒋传输到/search/files/文件夹下,因为还有haha/,所以会新建haha文件夹,然后在把haha.jpg文件传输到/search/files/haha/文件夹下。
rsync -avz /Users/apple/Desktop/haha.jpg [email protected]::modelname/haha/
方式二:
修改配置文件,并设置认证所需的账号密码
address = xxx.xxx.xxx.xxx
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
[search]
path = /search/files/
readonly = no
auth users = username
secrets file = /etc/rsyncd_users.db
新建rsyncd_users.db,并在文件中写入用户和密码信息
user:pwd
输入命令,设置映射用户对共享目录有权限
setfacl -m u:nobody:rwx /search/files/
参考链接:
https://www.cnblogs.com/chensiqiqi/p/6514315.html#111-%E4%BB%80%E4%B9%88%E6%98%AFrsync%EF%BC%9F
https://www.bilibili.com/video/BV1Lt411M7Yp?p=1