rsync学习小结

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

 

你可能感兴趣的:(linux命令)