![QQ截图20180111004002.png](http://www.xwblog.club/usr/uploads/2018/01/2879224932.png) 1.nfs即网络文件系统, 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files) 优点:配置简单。nfs文件系统内数据在文件系统之上,数据可见。服务稳定性和可靠性较高。 局限:高并发下效率性能有限(2千万一日以下pv) 2.rsync+inotify是一种实时数据同步方案 3搭建步骤: 关闭selinu和iptables server1为clinet端运行nginx网站服务 ip:192.168.3.131 server2为nfs服务端 ip:192.168.3.144 server3为rsyncdaemon端 ip:192.168.3.136 clinet: yum install -y nfs-utils mkdir -p /html #安装及创建本地挂载目录 mount -t nfs 192.168.3.144:/html /html #标准挂载 ################################# echo "/bin/mount -t nfs 192.168.3.144:/html /html" >> /etc/rc.local ##养成良好习惯,放进rc.local里,开机自动挂载 nfs: yum -y install nfs-utils rpcbind mkdir /html chown -R nfsnobody.nfsnobody /html #安装,创建及授权 http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz #inotify下载地址 echo 12334424451444 > index.html ##创建index.html文件 /etc/init.d/syncd stop ##inotify 服务控制 cat /etc/exports /html 192.168.3.0/24(rw,no_root_squash,no_all_squash,sync) ##exports 文件配置,配置完后运行“exports -r”刷新配置 ##常见的参数则有: 参数值 内容说明 rw ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 sync async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! no_root_squash root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦! anonuid anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。 inotify脚本: #this is inotify script #author xw 2017.12.13 #!/bin/bash Path=/html /usr/bin/inotifywait -mrq --format '%w%f' -e close_write,delete $Path \ | while read file do cd $Path &&\ rsync -az ./ --delete rsync_backup@192.168.3.136::backup --password-file=/etc/rsync.password done ###inotifywait命令帮助 inotifywait --help: --exclude 指定排除(忽略)部分文件或目录,这些文件或目录上不监听任何事件,正则表达式书写(相对路径) FMT: # --exclude 'Runtime' //忽略对Runtime目录的事件监听 --excludei 与--exclude相同,区别是此选项正则表达式忽略大小写 -m 或 --monitor 持续保持监听(如果不加此选项,则监听到一次后便退出) -d 或 --daemon 以守护进程方式后台运行(除了在后台运行外,与-m选项一样) -r 或 --recursive 递归监听其下所有子目录及文件 --fromfile Read files to watch from or `-' for stdin. -o 或 --outfile 将事件输出到指定文件,而不输出到屏幕 FMT: -o /var/log/inotifywait.log -s 或 --syslog 将错误发送到系统日志,而不是输出到屏幕 -q 或 --quiet 打印较少信息(仅打印事件) -qq 不打印任何信息(静默方式) --format 设置打印屏幕的格式,常见选项:%T时间;%w触发事件文件所在绝对路径;%f触发事件文件名称;%e触发的事件名称; FMT: # --format '%T %f %e' --timefmt 指定输出时间内容,相当于将时间赋值给%T FMT: # --timefmt '%y-%m-%d %H:%M' -c 或 --csv 用CSV格式打印事件 -t 或 --timeout 指定一次性监听时间,超时退出监听(值为0表示永不超时,单位:秒),不可与 -m -d 连用 FMT: # -t 60 //设定监听60秒,60秒内监听到事件立即退出,如果监听不到事件60秒后也退出 -e 或 --event [ -e|--event ... ] 指定要监听的事件(多个事件用逗号分割) FMT: # -e 'create,delete,close_write,attrib,moved_to' server3: rsyndaemo命令脚本以前写了,看看前面就知道了 最后,在浏览器输入192.168.3.131,访问到了3.144里/html/index.html里的内容,同时index.html文件也实时同步到3.136里的/html目录下,夜深了,下次再写。