- rsync [选项] 原始位置 目标位置 ## 把原始位置同步到目标位置
- a: 归档模式,递归保留对象属性,等同于 -rlptgoD 如属组属主
-v: 显示同步过程的详细(verbose) 信息
-z: 在传输文件时进行压缩(compress)
-H: 保留硬连接位置
-A:保留ACL属性信息
--delete : 删除目标位置有而原始位置没有的文件 #保持两边文件一致 (如果两边的数据不一致,那么用户访问获取的内容就是不一致了) 这条命令要小心
--checksum: 根据对象的校验和来决定是否跳过文件
[root@localhost ~]# vi /etc/sysctl.conf
……
fs.inotify.max_queued_events = 16384 ##监控数应大于监控目标的总文件数
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@localhost ~]# sysctl -p
参数说明
inotifywait
语法:
inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]
参数:
-h,–help
输出帮助信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-m, –monitor
接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-d, –daemon
跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog。
-o, –outfile
输出事情到一个文件而不是标准输出。
-s, –syslog
输出错误信息到系统日志
-r, –recursive
监视一个目录下的所有子目录。
-q, –quiet
指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-t , –timeout
设置超时时间,如果为0,则无限期地执行下去。
-e , –event
指定监视的事件。
-c, –csv
输出csv格式。
–timefmt
指定时间格式,用于–format选项中的%T格式。
–format
指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由–timefmt定义的时间格式
inotifywatch
语法:
inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]
参数:
-h, –help
输出帮助信息
-v, –verbose
输出详细信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, –zero
输出表格的行和列,即使元素为空
–exclude
正则匹配需要排除的文件,大小写敏感。
–excludei
正则匹配需要排除的文件,忽略大小写。
-r, –recursive
监视一个目录下的所有子目录。
-t , –timeout
设置超时时间
-e , –event
只监听指定的事件。
-a , –ascending
以指定事件升序排列。
-d , –descending
以指定事件降序排列。
可监听事件
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes //禁锢家目录
address = 192.168.75.200
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.75.0/24
[wwwroot]
path = /var/www/html
comment = www.kgc.com
read only = yes //只读和下载,但是不能上传
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //不压缩文件会造成,占用带宽造成网络拥塞,高并发
auth users = ttyy
secrets file = /etc/rsyncd_users.db //密码文件
[root@rsync ~]# vim /etc/rsyncd_users.db //写用户和密码
ttyy:123
~
yum -y install httpd
[root@rsync ~]# vim /var/www/html/index.html
<h1>this is yuanfuwuq webwebweb !!!!!!!!!!</h1>
rsync --daemon //开启
chmod 600 /etc/rsyncd_users.db
格式一:
rsync -avz [email protected]::wwwroot /opt
密码:123
格式二:
rsync -avz [email protected]::wwwroot /opt
密码:123
######## 免交互########
vim /etc/server.pass
abc123
[root@localhost opt]# chmod 600 /etc/server.pass
rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/
192.168.75.144作为源端服务器
inotify监听本地信息,然后进行同步到发起端
———————————————rsync+inotify———————————————————
注意: 源端设置:
[root@localhost html]# vim /etc/rsyncd.conf
read only = no
192.168.75.144作为源端服务器
inotify监听本地信息,然后进行同步到发起端
源端服务器:1
[root@localhost ~]#vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@localhost ~]# sysctl -p //加载配置
[root@localhost ~]# yum -y install gcc gcc-c++
准备安装包 inotify-tools-3.14.tar.gz
[root@localhost ~]# tar zxvf inotify-tools-3.14.tar.gz
[root@localhost ~]# cd inotify-tools-3.14/
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make && make install
[root@localhost ~]# vim inotify.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/ [email protected]::wwwroot " ###源服务器端的ip地址
$INOTIFY_CMD | while read DIRECTORY EVENT FILE ##读取输出的监控记录
do
if [ $(pgrep rsync | wc -l) -le 0 ] ##如果rsync未在执行,则立即启动
then
$RSYNC_CMD
fi
done
~
#################################脚本二###########################################
vim inotify22.sh
#!/bin/bash
dir="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ [email protected]::wwwroot"
dir2="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
$dir2 | while read file
do
$dir
done
yum -y install httpd
chmod 777 inotify22.sh
[root@localhost ~]# chmod 777 /var/www/html/ ##两端服务器都要设置
[root@localhost ~]# ./inotify22.sh //监听状态,另起窗口进行验证操作,是否同步信息
[root@localhost html]# touch tt4.txt
[root@localhost html]#
监听状态
[root@localhost ~]# ./inotify22.sh
rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync: chgrp "/.index.html.lAX8Ak" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt1.txt.Rmsur1" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt2.txt.4VdQhI" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt3.txt.uqdc8o" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt4.txt.7MpyY5" (in wwwroot) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync: chgrp "/.index.html.w1DjbA" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt1.txt.eUbplh" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt2.txt.WjVuvY" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt3.txt.7NTAFF" (in wwwroot) failed: Operation not permitted (1)
rsync: chgrp "/.tt4.txt.2e0GPm" (in wwwroot) failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
查看发起端 /var/www/html 已经同步了tt4.txt
[root@rsync html]# ll
总用量 4
-rw-------. 1 nobody nobody 32 9月 12 22:36 index.html
-rw-------. 1 nobody nobody 0 9月 12 22:36 tt1.txt
-rw-------. 1 nobody nobody 0 9月 12 22:36 tt2.txt
-rw-------. 1 nobody nobody 0 9月 12 22:36 tt3.txt
-rw-------. 1 nobody nobody 0 9月 12 22:36 tt4.txt
[root@rsync html]#