rsync的功能
rsync能够基于网络(含局域网和互联网)快速地实现多台主机间的文件同步工作
rsync的特点
rsync有独立的文件内容差异算法,会在传送前对两个文件进行比较,只传送两者内容间的差异部分,因此速度更快
rsync的使用场景
1、本地代码更新到测试服务器,我们一般采用git方式,测试服务器部署到线上服务器可以采用rsync的方式(我使用过这种架构)
2、正式服务器上的一些数据或者日志备份到备份服务器,可以使用此工具,因为它是第一次全量传输,后面都是只传输差异部分数据,因此经济性和性能很好
rsync的推和拉
1、这里的推和拉都是相对来说的
2、我们确定源服务器和目标服务器2个角色,数量上可能是一对一,一对多,多对一,多对多,这些都是可能存在的情况
3、如果我是源服务器,给目标服务器发送数据,这叫推
4、如果我是目标服务器,从源服务器上获取数据,这叫拉
5、至于选哪种方式合适,要结合实际的场景需求,多方面考虑,易维护,性能高,数据安全等等方面综合考虑
rsync的认证方式
名称 | 是否需要密码 | 说明 | 命令示例 |
ssh认证 |
需要 |
1、只需数据同步的双方服务器都安装rsync服务即可,且不必启动服务 2、如果目标主机的ssh端口不是22,必须用-e选项指定协议类型和端口号,如果是22则无需使用-e参数 3、执行命令,每次都需要输入登录目标主机ssh的密码,不支持--password-file参数指定密码文件 |
1、对方ssh端口是22:rsync -avz /tmp/data [email protected]:/data 2、对方ssh端口非22:rsync -avz -e "ssh -p 端口号" /tmp/data [email protected]:/data/ |
deamon认证 |
需要 |
1、需要远程主机开启 rsyncd 服务 2、本地 rsyncd 服务可不必开启 3、远程主机需要配置rsyncd.conf,里面含有端口号,同步模块信息,账号密码校验等信息,下面会提供一个配置文件的格式出来,以供参考 4、rsync服务配置的虚拟账号密码 5、可以使用--password-file指定密码文件,免去每次都需要输入密码 |
1、目标主机开启rsyncd 服务:/usr/bin/rsync --daemon 2、本地使用命令:rsync -avz --port 873 /tmp/data/* [email protected]::同步模块信息标识 --password-file=本机密码文件地址 |
rsync的常用参数
-a 归档模式, 表示以递归方式传输文件,并保持所有属性 -d 不递归目录文件,不传输子文件 -e 使用ssh协议进行传输,指定端口号 -r 递归处理所有子文件 -v 显示执行过程详细信息 -z 压缩文件 --delete 表示删除目标目录中源目录中没有的文件 --exclude 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt) --include 参数用来指定必须同步的文件模式,往往与 --exclude 结合使用 |
rsync的deamon认证相关配置和使用
vim /etc/rsyncd.conf 配置文件
# Minimal configuration file for rsync daemon
# # See rsync(1) and rsyncd.conf(5) man pages for help
# # rsync统一配置文件
#
# # This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
#默认端口873,也可以改成别的端口
port = 873
address = 0.0.0.0
uid = www
gid = www
#
use chroot = yes
read only = no
#
# #permission
incoming chmod = u+rwx,g+rx,o+rx
#
# #limit access to private LANs
# 可以指定IP地址的机器才能连接
hosts allow=*
# #hosts deny=*
#
max connections = 5
motd file = /etc/rsyncd.motd
#
# #This will give you a separate log file
log file = /var/log/rsync.log
#
# #This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
#
[data1]
path = /data/data1/
list = yes
ignore errors
auth users = rsync
secrets file = /etc/rsyncd.secrets
comment = data1目录数据同步
exclude = adminCache/ protected/runtime/ .git
[data2]
path = /data/data2/
list = yes
ignore errors
auth users = rsync
secrets file = /etc/rsyncd.secrets
comment = data2目录数据同步
exclude = adminCache/ protected/runtime/ .git
vim /etc/rsyncd.secrets 账号密码,和配置文件里面的auth users值保持一致
rsync:xxxxxx
说明:
1、这里的rsync是创建非登录用户且没有家目录的用户
useradd -s /sbin/nologin -M rsync
2、修改用户密码文件属性,只有拥有者可以rwx,组和其他用户都没有rwx权限
chmod 600 /etc/rsyncd.secrets
rsync连接服务端
rsync -avz --exclude=".git" --exclude="protected/runtime/" --exclude=".env" --port 873 本机数据目录 [email protected]::模块名称 --password-file=本机存放的服务器rsync用户密码
说明:
1、--port为服务端的端口号,默认873可以不用填写,如果是其他端口号,需要填写
2、模块名称是rsyncd.conf 配置文件里面的data1或者data2
3、本机存放的服务器rsync用户密码文件,必须设置权限为600
标签:rsync,--,linux,笔记,ssh,file,rsyncd,服务器 From: https://www.cnblogs.com/firstlady/p/17904138.html