rsync工具C/S同步通俗易懂全过程

redhat系统自带rsync服务无需安装
rpm -qa | grep rsync //检查是否安装,若未安装挂载光盘安装即可

服务端:
vim /etc/rsyncd.db //创建同步时需要的用户名密码文件(默认没有)
test:123 //test为用户,123为密码
rsync工具C/S同步通俗易懂全过程

vim /etc/rsyncd.conf //创建同步主配置文件(默认没有)
uid = nobody //运行用户
gid = nobody //运行组
use chroot = yes //用户禁锢到访问目录(除nobody用户文件外其他用户操作上传或下载无权限,文件属主_属组必须为nobody!!)
address = 192.168.1.10 //监听IP
port 873 //监听端口(确保无程序使用)
log file = /var/log/rsyncd.log //日志文件位置
pid file = /var/run/rsyncd.pid //PID运行文件位置
hosts allow = 192.168.1.0/24 //允许同步的网段
注:如局域网则写网段,如公网则写0.0.0.0即可
[data] //同步名(可随便定义),客户端连接服务端时需输入的
path = /data //同步的目录
comment = Document Root //同步文件描述
read only = no //是否只允许只读(二选一)
write = yes //用户可写(二选一)
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z //同步时不需压缩的格式
auth users = hehe //认证用户
secrets file = /etc/rsyncd.db //用户帐号文件位置
rsync工具C/S同步通俗易懂全过程

vim /etc/profile
export RSYNC_PASSWD=“123” //加入系统环境中免密传输
source /etc/profile

chmod 600 /etc/rsync.db //限制权限(仅root可增删传输用户)
mkdir /data && chown nobody:nobody /data && chmod 770 /data //同步目录限制权限
rsync --daemon //运行rsync同步服务

客户端:
mkdir /rsync //客户端创同步目录

ls -l /rsync //注意读写权限

下行方式:

方式一:rsync -avzHu rsync://[email protected]/data/ /rsync/

方式二:rsync -avzHu [email protected]::data /rsync/

方式三:rsync -avzHu --delete rsync://[email protected]/data/ /rsync/

方式四:rsync -avzHu --delete [email protected]::data /rsync/

服务端设为读权限,客户端读取即可下载

上行方式:

方式一:rsync -avzHu /rsync/ rsync://[email protected]/data

方式二:rsync -avzHu /rsync/ [email protected]::data

方式三:rsync -avzHu --delete /rsync/ rsync://[email protected]/data

方式四:rsync -avzHu --delete /rsync/ [email protected]::data

服务器设为写入权限,客户端上传即可写入

crontab -e //指定计划任务
50 23 * * * source /etc/profile /usr/bin/rsync -avzHu rsync://[email protected]/data /rsync/ //定时下行同步
50 23 * * * source /etc/profile /usr/bin/rsync -avzHu /rsync/ rsync://[email protected]/data //定时上行同步

安装inotify-tools可以实现触发同步功能

检测到有增删改操作时触发并进行同步,操作如下:
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 //监控事件队列数
fs.inotify.max_user_instances = 1024 //监控实例数
fs.inotify.max_user_watches = 1048576 //监控的文件数量
sysctl -p
rsync工具C/S同步通俗易懂全过程vim rsync_inotify.sh //实时同步脚本
#!/bin/bash
RSYNC=“rsync -avzHu /rsync/ rsync://[email protected]/data”
INT_CMD=“inotifywait -mrq -e modify,create,move,delete,attrib /rsync”
export RSYNC_PASSWORD=123
$INT_CMD | while read DIRECOTRY EVENT FILE;do
$RSYNC 1>/dev/null 2>/var/log/rsync_err.log
done
rsync工具C/S同步通俗易懂全过程触发时间的权限:
modify:更改
create:创建
move:移动
delete:删除
attrib:修改