目录
前言
一、概述
监听端口
二、特点
快捷
安全
三、数据的同步方式
四、rsync传输方式
本地传输
远程传输
守护进程
五、命令
作为远程命令
作为rsync服务
选项
六、配置文件
全局配置
模块配置
守护进程传输
七、rsync+inotfy实时同步
一、服务端
二、开发客户端
安装inotify工具
配置内核参数
前言
rsync是一个用于文件同步和备份的开源工具。它可以在本地系统之间或本地与远程系统之间同步和复制文件。rsync使用快速差异算法来确定需要更新的文件部分,以便仅传输已更改的数据,从而提高同步效率。它可以在不同的操作系统之间工作,并支持通过SSH进行安全的远程同步。
rsync具有灵活的配置选项,可以满足不同的需求。它可以按文件、目录、权限和时间戳等进行过滤,以控制同步的范围。rsync还支持增量备份和部分文件传输,从而减少数据传输量并节省带宽。
使用rsync,您可以轻松地将文件从一个位置同步到另一个位置,无论是本地的不同目录还是本地与远程服务器之间的同步。它被广泛用于数据备份、网站部署、镜像镜像和远程文件同步等场景。
一、概述
rsync是linux 下一个远程数据同步工具
他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输
会对比两个文件的不同部分,传输差异部分,因此传输速度相当快
rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝
监听端口
TCP 873
二、特点
快捷
第一次传输全部,下一次传输差异
rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽
安全
可以使用scp、ssh等方式传输
直接通过socket连接
支持匿名传输、方便进行网站镜像
三、数据的同步方式
数据备份:拉取(下载) pull
数据恢复:推送(上传) push
四、rsync传输方式
本地传输
本地同步数据,类似于cp
远程传输
远程同步数据,类似于scp
守护进程
通过模块化的方式实现批量传输
五、命令
rsync [选项] 原始位置 目标位置
作为远程命令
拉取 rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推送 rsync [OPTION...] SRC... [USER@]HOST:DEST
作为rsync服务
拉取 rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推送 rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
选项
-a 归档模式,递归并保留对象属性,等同于-rlptgoD
-v -verbose 显示同步过程的详细信息
-z 在传输文件时进行压缩
六、配置文件
全局配置
address 独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP
port 指定 rsync 守护进程监听的端口号,默认 873
pid file rsync 的守护进程将其 PID 写入指定的文件
log file 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
syslog facility 指定 rsync 发送日志消息给 syslog 时的消息级别
socket options 指定自定义 TCP 选项
lockfile 指定rsync的锁文件存放路径
timeout 超时时间
模块配置
path 指定当前模块的同步路径,该参数是必须指定的
comment 给模块指定一个描述
use chroot 在服务运行时要不要把他锁定在家目录,默认为 true
uid和gid 指定rsync运行用户和用户组,默认nobody
max connections 最大并发连接数,0为不限制
lock file 指定支持 max connections的锁文件。默认/var/run/rsyncd.lock
list 指定列出模块列表时,该模块是否被列出。默认为 true
read only 只读选择,默认true
write only 只写选择,不让客户端从服务器上下载文件。默认false
ignore errors 忽略IO错误,默认true
ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。
dont compress 用来指定那些在传输之前不进行压缩处理的文件。
hosts allow 指定哪些主机客户允许连接该模块。默认值为 *
hosts deny 指定哪些主机客户不允许连接该模块
auth users 指定用于上传的用户名
secrets files 指定密码文件
守护进程传输
配置 vim /etc/rsync.conf
uid=rsync
gid=rsync
fake super=yes # 用于允许非root用户,在备份目录创建文件
auth users=rsync_backup # 用于指定认证用户
secrets file=/etc/rsync.passwd # 指定认证用户密码
read only = false
ignore errors # 屏蔽错误报错
[backup]
path=/backup
创建用户 useradd -s /sbin/nologin -M rsync
创建认证用户的密码 echo 'rsync_backup:123456' >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd
准备模块目录 mkdir /backup
chown rsync.rsync /backup
重启服务 systemctl restart rsyncd
客户端远程传输 rsync -avz /etc/hosts rsync_backup@192.168.100.2::backup
通过密码文件实现免密传输 vim /etc/rsync.passwd
123456
chmod 600 /etc/rsync.passwd
rsync -avz /etc/hosts rsync_backup@192.168.100.2::backup --password-file /etc/rsync.passwd
七、rsync+inotfy实时同步
一、服务端
安装网站服务,启动,但是不写首页文件
修改主配置文件
uid = root
gid = root
[wwwroot]
path = /var/www/html
comment = httpd wwwroot
read only = false
hosts allow = 192.168.100.0/24
二、开发客户端
安装inotify工具
inotify-tools
tar xf inotify-tools-3.14.tar.gz
./configure && make && make install
配置内核参数
vim /etc/sysctl.conf
fs.inotify.max_user_instances = 1024
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_watches=1048576
sysctl -P
inotifywait -mrq -e modify,create,move,delete /var/www/html(需要再次打开一个终端进行验证)
vim /opt/inotify_rsync.sh
服务器验证