跳转到内容

rsync工具使用方法

/etc/rsyncd.conf
uid = root
gid = root
use chroot = yes #禁锢在源目录
address = 192.168.132.6 #监听地址
port = 873 #监听端口tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/1og/rsyncd.1og #日志文件位置
pid file = /var run/rsyncd.pid #存放进程ID的文件位置
hosts allow = 192.168.132.6 #允许访问的客户机地址。多个地址以空格分隔
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
[wwwroot] #共享模块名称
path = /var/www/html #源目录的实际路径
comment = Document Root of www.djq.com #备注
read only = yes #是否为只读。yes表示客户端只能读取目录内容,不能写入。只允许下行,不允许上行。
auth users = backuper #授权账户,多个账号以空格分隔。授权用户,允许读取的用户名。
secrets file = /etc/rsyncd_users.db
#存放授权账户信息的数据文件
#如采用匿名的方式,只要将其中的“auth users"和“secrets file"配置项去掉即可。
/etc/rsyncd_users.db
backuper:abc123
#无须建立同名系统用户。backuper为用户名,abc123为密码。

3. 保证所有用户对源目录/var/www/html都有读取权限

Section titled “3. 保证所有用户对源目录/var/www/html都有读取权限”
Terminal window
chmod 600 /etc/rsyncd_users.db
chmod +r /var/www/html/
ls -ld /var/www/html/
Terminal window
rsync --daemon #启动rsync 服务,以独立监听服务的方式(守护进程)运行
netstat -anpt | grep rsync
Terminal window
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

rsync+inotify 上行同步(实时同步)

Section titled “rsync+inotify 上行同步(实时同步)”
/etc/rsyncd.conf
read only = no #使服务端目录可写
vim /etc/sysctl.conf #内核参数都在该文件中修改,(可选)
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
Terminal window
sudo apt install inotify-tools
inotifywait -mrq -e modify,create,move,delete /data
/opt/inotify.sh
#!/bin/bash
#定义inotifywait监控/data目录中文件事件的变量。attrib表示属性变化。
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /data"
#定义执行 rysnc 上行同步的变量。--delete保证两边目录内容一致,可以不加。
RSYNC_CMD="rsynC -azH --delete --password-file=/etc/server.pass /data backuper@192.168.142.10::backupdir/"
#使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
#如果rsync未在执行,则立即启动
if[ $(pgrep rsync | wc -l) -le 0 ];then
$RSYNC_CMD
fi
done
Terminal window
chmod +x /opt/inotify.sh
chmod +x /etc/rc.d/rc.local #开机自启脚本文件
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local #加入开机自动执行
#之后运行脚本(后台运行)
cd /opt/
./inotify.sh
#之后在发起端创建文件,查看源服务器中是否新增了