一、概述
rsync是一种常用的文件同步工具,可以在本地或远程计算机之间同步文件和目录。它可以快速、可靠地传输大量数据,并且可以在传输过程中检测和恢复错误。rsync可以在本地计算机之间同步文件,也可以在本地和远程计算机之间同步文件。它可以通过SSH等安全协议进行加密传输,保证数据的安全性。rsync还支持增量同步,只传输文件的变化部分,可以大大减少传输时间和带宽占用。
二、工作原理
1. 首先,rsync会在本地和远程主机之间建立一个TCP连接。
2. 然后,rsync会比较本地和远程主机上的文件和目录,找出需要同步的文件和目录。
3. 接下来,rsync会使用一种类似于差分算法的方式,只传输本地和远程主机之间不同的部分,从而减少数据传输量。
4. 在传输过程中,rsync会对每个文件进行校验和计算,以确保传输的文件完整无误。
5. 最后,rsync会在本地和远程主机之间关闭TCP连接,完成数据同步。
三、配置rsync
基于本地和远程传输的话可以直接使用
1、基于本地传输
rsync 1.txt /root/test
2、基于远程传输
rsync /etc/hosts 192.168.17.1:/root/test
将客户端的/etc/hosts 移动到服务器的/root/test中
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 指定用户路径
useradd rsync -s /sbin/nologin -M 创建一个程序用户
echo “rsync_syh:123456” > /etc/rsync.passwd 创建用户密码
chmod 600 /etc/rsync.passwd 给密码文件读写权限
mkdir syh 创建配置文件中声明的文件
chown rsync:rsync /syh 给这个文件属主属组设置为rsync
rsync -avz /etc/hosts rsync_syh@192.168.1.1::syh
-a归档模式 递归并保留对象属性 -v显示同步过程的详细信息 -z在传输过程中压缩
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所有网段都可以访问这个目录
客户端(需要安装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
inotifywait -mrq -e modify,create,move,delete /var/www/html
监视/var/www/html目录及其子目录下的文件和目录的修改、创建、移动和删除事件
- -m:持续监视目录,直到手动停止。
- -r:递归监视子目录。
- -q:安静模式,不输出监视到的事件。
- -e:指定监视的事件类型,这里包括modify(文件修改)、create(文件创建)、move(文件移动)和delete(文件删除)。