rsync命令常用选项
-a:归档模式,递归并保留对象属性,等同于 -rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
--delete:删除目标位置有而原始位置没有的文件
--checksum:根据对象的校验和来决定是否跳过文件
启动服务
rsync --daemon
结束服务
kill $(cat /var/run/rsyncd.pid) && rm -f /var/run/rsyncd.pid
配置文件vim /etc/rsyncd.conf
uid = nobody
gid = nobody 指定管理程序的程序用户
use chroot = yes 禁锢主目录(只能备份指定目录的内容)
address = 192.168.4.200 指定同步源的IP
port 873 设置rsync端口号
log file = /var/log/rsyncd.log 指定日志文件位置
pid file = /var/run/rsyncd.pid 指定进程号文件位置
hosts allow = 192.168.4.0/24 允许来备份的IP地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z 不需要压缩的文件
[wwwroot] 别名,相当于共享名
path = /var/www/html 指定共享目录(需要创建)
comment = Document Root of www1.benet.com 说明
read only = yes 只读
auth users = backuper 授权用户(允许来备份的用户身份)
secrets file = /etc/rsyncd_users.db 指定授权用户配置文件
用户配置文件/etc/rsyncd_users.db(权限必须是600,否则客户端验证通不过)
文件格式
用户名:密码 (backuper:123.com)
下行同步:
在客户端执行
rsync -avz 用户名@同步源IP::别名 本地目录
rsync -avz backuper@192.168.1.2::wwwroot /var/www/html
在客户端设置密码文件
echo "123.com" >> /etc/server.pass
chmod 600 /etc/server.pass(权限必须600,否则不允许使用)
rsync -avz --password-file=密码文件路径 用户名@同步源IP::别名 本地目录
上行同步
主配置文件
修改为
read only = no
修改根目录权限,允许其他用户写入
chmod 757 /var/www/html
rsync -avz 本地目录 用户名@同步源IP::别名
自动上行同步(客户端操作)
1、修改内核参数
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p (让配置的内核参数生效)
2、安装inotify
解压、配置、编译、安装
3、制作脚本,自行上传
vim rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.1.2::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
监控本地目录,当目录内容有修改、创建、 、移动、删除的时候触发
inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/