安装rsync备份服务器;【873端口】 yum –y install rsync【./configure --prefix=/usr/local/rsync --disable-ipv6 make make install】 rsync传输模式:三种【本地数据传输、通过远程shell进行数据传输、守护进程推送daemon】 本地数据传输 :rsync 选项参数 源目录 目标目录 rsync –avz /opt /tmp 通过远程shell进行数据传输 拉取 :rsync [option] [user] host:src [dest] 抓取:rsync –avz –P –e ‘ssh –p 22’ test001@192.168.1.179:/tmp/oldboy /tem/ 本地推送到远端:rsync –avz –P oldboy –e ‘ssh –p 22’ test001@192.168.1.179:/tmp 【同步文件时目标属性不变】【显示同步过程】【通过ssh的通道传输数据】【主机用户、地址、路径】【本地路径】 -vzrtopDL相当于-avz –progress相当于-P【一般用-avz】 注意:-e:使用信道协议 目录加斜线表示推送这个目录下的文件不包括这个目录 守护进程推送daemon daemon【rsync.conf】 服务器配置rsync 【手动生成配置文件:rsyncd.conf、密码配置文件:rsyncd.pas、欢迎界面rsyncd.motd】 # vi /etc/rsyncd.conf log file = /usr/local/rsync/var/rsyncd.log //日志文件 pid file = /usr/local/rsync/var/rsyncd.pid //pid文件路径 lock file = /usr/local/rsync/var/rsyncd.lock //指定lock文件 secrets file = /usr/local/rsync/etc/rsyncd.pas //指定用户密码对文件 motd file = /usr/local/rsync/etc/rsyncd.motd //指定欢迎消息文件 uid = root //rsync以什么用户身份启动 gid = root //rsync以什么用户组身份启动 use chroot = no //模块的最大并发连接数量,以保护服务器,超过设置值,连接请求将被暂时限制 max connections = 30 //最大连接数 timeout = 600 //超出时间 [bak] //模块【可以添加多个模块】 path = /home /testSyn //需要同步的目录 Ignore error【表示出现错误忽略错误】 comment = www bak //描述信息,可以任意填写 read only = no //设置为no,表示客户端可以上传。如果设置为yes,表示只读 write only = no //设置为no,表示客户端可以下载。 list = yes //这里设置IP或不让同步 hosts allow = 192.168.0.0/16,192.168.10.0/24 //允许的IP段 auth users = root //认证的用户,服务器必须存在这个系统用户 【模块[oldboy]、path、ignor errors、readonly=false、list=false、hostallow、hostdeny、auth_user、secrets file=认证加密文件】 修改密码配置 # vi /etc/rsyncd.pas(用户密码对文件,用“:”隔开):root:abc123, 修改权限# chmod 600 /etc/rsyncd.pas //权限必须为600,否则会出错 配置欢迎消息 # vi /etc/rsyncd.motd: welcome to rsync 161 启动rsync:/opt/rsync/bin/rsync --daemon --config=/opt/rsync/etc/rsync.conf,加入到/etc/rc.d/rc.local开机启动 客户端配置:【格式:rsync -参数 认证的用户[auth users]@IP::模块 密码文件】 设置访问密码并赋予600权限:echo “abc123”>/etc/rsyncd.pas 本地推送到远端: rsync –avz –P /tem/oldboy rsync_back@10.0.0.178::oldboy/ --passwd.file=/etc/rsync.passwd 抓取:rsync –avz –P rsync:// rsync_back@10.0.0.178:/oldboy/tmp/ --passwd.file=/etc/rsync.passwd 【双冒号加模块,单冒号加路径和前面的rsync://】 用—delete作为推送时,本地和服务端实现数据同步,目录都相同,不同的删除,慎用 拉取:rsync –avz –P rsync_backup@10.0.0.114::oldboy/etc/rsync.password /tmp --passwd.file=/etc/rsync.passwd 添加多个模块:相同的参数放在前面,后面的模块添加模块路径 设置自动化:#vim /usr/sbin/rsync.sh【chmod 770】【00 * * * * /bin/sh /usr/sbin/rsyncd.sh】 注意:关闭防护墙iptable、selnux、文件权限 Rsync+inodify实现远程同步命令: 确保rsync服务端配置完成,客户端能推送到服务端: 客户端推送: rsync –avzP --timeout=100 /data/www rsync_backup@10.0.0.12::www --passwd.file=/etc/rsync.passwd 推送成功部署inotify:ls –l /proc/sys/fs/inotify出现三个文件表示能配置inotify max_queued_evnets 分配给inotify instance中可排队的event的数目的最大值 max_user_instances 每一个real user ID可创建的inotify instatnces的数量上限 max_user_watches 每个inotify instatnces可监控的最大目录数量 下载inotify安装:./configure –prefix=/usr/local/inotify 配置事件监控脚本:IP地址、同步目录、模块、虚拟用户名、密码、安装路径,进行判断不存在返回错误 #!/bin/bash #para host01=192.168.1.160 #inotify-slave的ip地址 src=/backup/ #本地监控的目录 dst=backup #inotify-slave的rsync服务的模块名 user=rsync_backup #inotify-slave的rsync服务的虚拟用户 rsync_passfile=/etc/rsync.password #本地调用rsync服务的密码文件 inotify_home=/usr/local/inotify-3.14 #inotify的安装目录 #judge if [ ! -e "$src" ] \ || [ ! -e "${rsync_passfile}" ] \ || [ ! -e "${inotify_home}/bin/inotifywait" ] \ || [ ! -e "/usr/bin/rsync" ]; then echo "Check File and Folder" exit 9 fi ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \ | while read file do # rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1 cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 done exit 0 执行脚本sh inotify.sh & ps –ef|grep inotify 进入同步目录查看情况 ,创建时两边都生效。 测试:创建100个文件 for f in `echo {100..200}`;do touch $f;done