rsync原理
一、理解
## romote sync 是一个远程同步同步工具,它会检查接受发与发送方的文件差异,仅传输有变动的部分。
# 如果仅仅用于本机文件传输,可以简单的理解为cp,将文件从一个文件夹复制到另一个文件夹,相比较于复制更加强大的功能差异在于处理文件内容差异上,cp是复制所有,而rsync会复制差异;复制目录的过程中也可以通过--delete参数进行差异复制,即A目录下的所有内容不会完全复制过去,具体差异根据--delete参数后面加的文件而定。
# 如果用于远程文件传输,可以理解为scp,rsync也有“推”和“拉”两种动作区分,区别在于文件差异上,对文件差异的处理决定了传输的速率。传输的过程使用-z参数还可以进行压缩传送,这一点让我想起了ssh协议于telnat协议的区别:ssh使用了rsa非对称加密算法,所以它安全;传输的过程中将文件进行压缩,所以传输速率快。
二、配置
# yum -y install rsync
# cat /etc/rsyncd.conf
uid = rsync # 用户
gid = rsync # 组
fake super = yes # centos7中打开,centos6可忽略
use chroot = no # 安全设置
max connections = 200 # 最大连接数
timeout = 300 # 连接超时时间300~600自己粗算
pid file = /var/run/rsyncd.pid # pid文件路径
lock file = /var/run/rsync.lock # 锁文件路径
log file = /var/log/rsyncd.log # 日志路径
[backup_gitlab] # 模块名
path = /backup/A # 传输文件存放目录
ignore errors # 忽略个别文件io错误,不因个别文件影响传输任务
read only = false # true:禁止写入
list = false # false:允许写入
hosts allow = 192.168.191.68 # 允许的ip主机
auth users = rsync # 允许连接rsync服务的账号(非系统账号)
secrets file = /etc/rsync.password # 密码文件存放路径
[backup_wiki]
path = /backup/B
ignore errors
read only = false
list = false
hosts allow = 192.168.191.0/24 # 允许的ip段
auth users = rsync
secrets file = /etc/rsync.password
# 补充密码文件说明
1、文件权限必须600
[root@databackup ~]# ll /etc/rsync.password
-rw------- 1 root root 20 Jun 1 2020 /etc/rsync.password
2、文件内容
[root@databackup ~]# cat /etc/rsync.password
rsync:tanuki_11@163.com
[root@databackup ~]# ss -anptu | grep rsync
tcp LISTEN 0 5 *:873 *:* users:(("rsync",pid=5448,fd=4))
tcp LISTEN 0 5 :::873 :::* users:(("rsync",pid=5448,fd=5))
三、使用
# rsync命令行操作基础格式和scp一样,命令+文件+目标地址+文件路径...
# rsync各种参数
-a # 这是归档模式,表示以递归方式传输文件,并保持所有属性.
-v # 表示打印信息,比如文件列表、文件数量等。
-z # 加上该选项,将会在传输过程中压缩。
--delete # 表示删除 dest 中 src 没有的文件。
--exclude # 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)。
# 远程传输文件过程中使用协议:
# 当使用ssh协议时:
# rsync -avz /root/src/ username@remote_host:dest
# 除了使用 SSH,如果另一台服务器安装并运行了 rsync,也可以用rsync://协议(默认端口873)进行传输。具体写法是服务器与目标目录之间使用双冒号分隔::。
# rsync -av source/ 192.168.122.32::module/config_path
以上。