Rsync使用笔记
Rsync 是什么
rsync 是一个常用的 Linux 应用程序,用于文件同步。
它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。
以上是复制粘贴。
使用场景:打包服务器编译成功后,将相关文件移动到部署服务器上。
安装
mac 和 centos 一般自带
检查是否安装
rpm -qa|grep rsync
rsync --version
安装
yum install rsync
检查运行情况
ss -lntup|grep rsync # 查看端口信息
ps -ef|grep rsync # 查看进程
配置、启动与关闭
配置
野生的 rsync 配置文件
rsyncd.conf
一般在/etc
目录下,为了规范和好查找,可以创建rsyncd
文件夹并统一存放
######### 全局配置参数 ##########
address = 192.168.0.1 # 指定rsync地址
port=873 # 指定rsync端口。默认873
uid = rsync # rsync服务的运行用户,默认是nobody,文件传输成功后属主将是这个uid
gid = rsync # rsync服务的运行组,默认是nobody,文件传输成功后属组将是这个gid
pid file = /var/run/rsyncd.pid # 运行后将 pid 存入该文件中
use chroot = no # rsync daemon在传输前是否切换到指定的path目录下,并将其监禁在内
max connections = 3 # 指定最大连接数量,0表示没有限制
timeout = 900 # 确保rsync服务器不会永远等待一个崩溃的客户端,0表示永远等待
motd file = /var/rsyncd/rsync.motd # 客户端连接过来显示的消息
pid file = /var/rsyncd/rsyncd.pid # 指定rsync daemon的pid文件
lock file = /var/rsyncd/rsync.lock # 指定锁文件
log file = /var/rsyncd/rsyncd.log # 指定rsync的日志文件,而不把日志发送给syslog
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # 指定哪些文件不用进行压缩传输
###########下面指定模块,并设定模块配置参数,可以创建多个模块###########
[gengar] # 模块ID
path = /data0/static/gengar/ # 指定该模块的路径,该参数必须指定。启动rsync服务前该目录必须存在。rsync请求访问模块本质就是访问该路径。
ignore errors # 忽略某些IO错误信息
read only = false # 指定该模块是否可读写,即能否上传文件,false表示可读写,true表示可读不可写。所有模块默认不可上传
write only = false # 指定该模式是否支持下载,设置为true表示客户端不能下载。所有模块默认可下载
list = false # 客户端请求显示模块列表时,该模块是否显示出来,设置为false则该模块为隐藏模块。默认true
hosts allow = 10.0.0.0/24 # 指定允许连接到该模块的机器,多个ip用空格隔开或者设置区间,全部允许用 *
hosts deny = 0.0.0.0/32 # 指定不允许连接到该模块的机器
auth users = rsync_backup # 指定连接到该模块的用户列表,只有列表里的用户才能连接到模块,用户名和对应密码保存在secrts file中,
# 这里使用的不是系统用户,而是虚拟用户。不设置时,默认所有用户都能连接,但使用的是匿名连接
secrets file = /etc/rsyncd/rsyncd.passwd # 保存auth users用户列表的用户名和密码,每行包含一个
username:passwd # 由于"strict modes"
# 默认为true,所以此文件要求非rsync daemon用户不可读写。只有启用了auth users该选项才有效。
[xiaofang] # 以下定义的是第二个模块
path=/xiaofang/
read only = false
ignore errors
comment = anyone can access
停止
kill "cat /var/run/rsyncd.pid"
每次启动前都要先停止之前的设置,不然部分设置一直不!会!改!变!(而且也没个提示) 别问我咋知道的,想静静。
补充说明:
1. `motd file` 不是必须,但是使用列出资源的命令时会显示,可有效防止连错机器。
2. `hosts allow` 可在全局中配置,也可在每个模块中单独设置
以守护进程启动
rsync --daemon --config=/etc/rsyncd/rsyncd.conf
打开防火墙
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
同步文件
列出远程服务器 rsync 资源
rsync rsync://192.168.0.1
// 或者
rsync rsync://192.168.0.1:888
内网无密码同步
rsync -r ./dist/* rsync://192.168.0.1:888/gengar/
错误处理
端口设置错误
rsync: failed to connect to 192.168.0.1: Connection refused (61)
rsync error: error in socket IO (code 10) at /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-55/rsync/clientserver.c(106) [receiver=2.6.9]
rsync: safe_read failed to read 1 bytes [sender]: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(285) [sender=3.1.3]