如果只为使用,不建议深挖,会配置,会使用就ok了。

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

以上。