rsync工具C/S同步通俗易懂全过程
redhat系统自带rsync服务无需安装
rpm -qa | grep rsync //检查是否安装,若未安装挂载光盘安装即可
服务端:
vim /etc/rsyncd.db //创建同步时需要的用户名密码文件(默认没有)
test:123 //test为用户,123为密码
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 //用户帐号文件位置
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 -pvim 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触发时间的权限:
modify:更改
create:创建
move:移动
delete:删除
attrib:修改