一、概述

rsync是一种常用的文件同步工具,可以在本地或远程计算机之间同步文件和目录。它可以快速、可靠地传输大量数据,并且可以在传输过程中检测和恢复错误。rsync可以在本地计算机之间同步文件,也可以在本地和远程计算机之间同步文件。它可以通过SSH等安全协议进行加密传输,保证数据的安全性。rsync还支持增量同步,只传输文件的变化部分,可以大大减少传输时间和带宽占用。

二、工作原理

1. 首先,rsync会在本地和远程主机之间建立一个TCP连接。

2. 然后,rsync会比较本地和远程主机上的文件和目录,找出需要同步的文件和目录。

3. 接下来,rsync会使用一种类似于差分算法的方式,只传输本地和远程主机之间不同的部分,从而减少数据传输量。

4. 在传输过程中,rsync会对每个文件进行校验和计算,以确保传输的文件完整无误。

5. 最后,rsync会在本地和远程主机之间关闭TCP连接,完成数据同步。

三、配置rsync

基于本地和远程传输的话可以直接使用

1、基于本地传输

rsync 1.txt /root/test

rsync 传输文件 比源文件小一点 rsync传输原理_运维

rsync 传输文件 比源文件小一点 rsync传输原理_共享目录_02

2、基于远程传输

rsync /etc/hosts 192.168.17.1:/root/test

将客户端的/etc/hosts 移动到服务器的/root/test中

rsync 传输文件 比源文件小一点 rsync传输原理_共享目录_03

 3、基于守护进程    通过模块化的方式实现批量传输

uid = rsync                             指定用户为rsync                            
gid = rsync                             用于指定同步目录时使用的组
fake super=yes                          用于允许非ROOT用户创建文件
list=false                              允许查看本机有哪些模块
auth user=rsync_syh                     用于指定认证用户
secrets file=/etc/rsync.passwd          用于指定密码文件路径
read only=no                            模块目录只读权限
ignore errors                           屏蔽错误报错

[syh]                                   指定用户名
path=/syh                               指定用户路径

rsync 传输文件 比源文件小一点 rsync传输原理_rsync 传输文件 比源文件小一点_04

useradd rsync -s /sbin/nologin -M  创建一个程序用户

rsync 传输文件 比源文件小一点 rsync传输原理_服务器_05

echo “rsync_syh:123456” > /etc/rsync.passwd  创建用户密码

rsync 传输文件 比源文件小一点 rsync传输原理_rsync 传输文件 比源文件小一点_06

 

chmod 600 /etc/rsync.passwd  给密码文件读写权限

rsync 传输文件 比源文件小一点 rsync传输原理_服务器_07

mkdir syh                      创建配置文件中声明的文件

chown rsync:rsync /syh        给这个文件属主属组设置为rsync

rsync 传输文件 比源文件小一点 rsync传输原理_服务器_08

 

rsync -avz /etc/hosts rsync_syh@192.168.1.1::syh
-a归档模式 递归并保留对象属性 -v显示同步过程的详细信息 -z在传输过程中压缩

rsync 传输文件 比源文件小一点 rsync传输原理_服务器_09

rsync 传输文件 比源文件小一点 rsync传输原理_运维_10

 4、实时同步

服务器

uid = root                            指定用户
gid = root                            指定组
    
[syh]                                 共享文件夹名称
path=/var/www/html                    指定共享目录的路径为/var/www/html
comment = syh export area             为共享目录添加注释
read only = false                     设置共享目录为可读写,允许用户对共享目录中的文件进行修改
hosts allow 192.168.17.0/24           192.168.17.0所有网段都可以访问这个目录

 

rsync 传输文件 比源文件小一点 rsync传输原理_共享目录_11

rsync 传输文件 比源文件小一点 rsync传输原理_共享目录_12

 

 客户端(需要安装inotify-tools)

vim /etc/sysctl.conf
配置内核文件
fs.inotify.max_user_instances = 1024     每个用户可以创建的inotify实例的最大数量为1024
fs.inotify.max_queued_events = 16384     每个inotify实例可以排队的最大事件数量16384
fs.inotify.max_user_watches = 1048576    每个用户可以创建的inotify监视的最大数量1048576

 

rsync 传输文件 比源文件小一点 rsync传输原理_rsync 传输文件 比源文件小一点_13

inotifywait -mrq -e modify,create,move,delete /var/www/html
监视/var/www/html目录及其子目录下的文件和目录的修改、创建、移动和删除事件
- -m:持续监视目录,直到手动停止。
- -r:递归监视子目录。
- -q:安静模式,不输出监视到的事件。
- -e:指定监视的事件类型,这里包括modify(文件修改)、create(文件创建)、move(文件移动)和delete(文件删除)。

rsync 传输文件 比源文件小一点 rsync传输原理_linux_14

这里打开两个终端 可以看见右边的终端创建了一个文件,左边的终端会实时的提示这个文件夹干了什么

以上就是rsync的四种使用方法

如有错误欢迎各位大佬批评指正,我们共同进步