博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win+rsync+php,跨平台的fswatch+rsync同步备份
阅读量:4943 次
发布时间:2019-06-11

本文共 1416 字,大约阅读时间需要 4 分钟。

rsync是非常好用,但是只是极好的cp而已。如果要监控本地某些文件变化,自动上传,还需要配合其它监控工具。一般都叫watch, notify什么的。

最有名的是inotify。但是inotify是linux内核的东西,没法在Mac上运行。

Mac上的替代方案是fswatch,而且可以跨平台运行(但是目前发现只有mac支持的最好)。

fswatch意料之外的简单好用,不需要配置文件,不需要复杂的参数,几分钟的学习就能完成一个真正可行的自动备份脚本,实际上作为“替代品”,远比inotify等要好用很多。在其Github官方说明上,也例数了当前最常用的各种inotify、kqueue等的缺点。

1460000018024254?w=905&h=568

安装 (Mac):

$ brew install fswatch

使用,先直接输入命令试试:

# 开始监控(进入block堵塞模式,动态输出变动)

# 假设监控/tmp文件夹

fswatch -0 /tmp | while read -d "" event; do

echo "This file ${event} has changed."

done

然后随意往/tmp文件夹创建个文件什么的: touch /tmp/000000.txt

这时候,刚才正在监控的shell,就会立马显示出新创建的文件名/tmp/000000.txt

利用fswatch+rsync备份

假如要监控/path/to/source/文件夹,那么就:

fswatch $1 | while read -d "" event; do

rsync -rauv --delete --progress /path/to/source/ /path/to/target/

done

但是fswatch默认会进入堵塞模式,也就是一直挂在shell中。

如果我们让它后台运行,只需要在done后加一个&,转入后台运行即可。

多路径备份

虽然fswatch能够同时监控多个目录:如fswatch [options] ... path-0 ... path-n,但是一般我们是针对每个不同的文件夹做不同的事。

所以,最简单最方便的方法,就是同时运行多个fswatch 。

但是默认一个fswatch就进入堵塞模式,所以必须每次结束后转入后台,如done &。

直接创建一个脚本rsync.sh,输入代码如下:

# 任务1

fswatch $1 | while read -d "" event; do

rsync -rauv --delete --progress /path/to/source1/ /path/to/target1/

done &

# 任务2

fswatch $1 | while read -d "" event; do

rsync -rauv --delete --progress /path/to/source2/ /path/to/target2/

done &

这样一来,我们不需要利用crontab来定时执行了。取而代之的是fswatch每次监控到变化就自动执行其中的语句。

至于fswatch的实现原理,这要涉及到Kernel内核的多任务运行机制。比如cron job是采用定期循环式运行一个任务,但是fswatch是采用消息通知式,有变化才运行任务。

要了解更多原理,就去查epoll和异步IO等相关话题。这里,只知道怎么用就好了。

转载地址:http://ebtmp.baihongyu.com/

你可能感兴趣的文章
Android Studio第十五期 - 友盟统计集成
查看>>
Android内核开发:序
查看>>
部署tomcat负载均衡集群,实现节点之间内存中的Session共享。
查看>>
如何测试WEB应用程序防止SQL注入***
查看>>
TFS版本管理(八)
查看>>
【VMCloud云平台】SCO(五)制作流程(一)
查看>>
从NDK在非Root手机上的调试原理探讨Android的安全机制
查看>>
八大深层志趣——问问你自己到底喜欢做什么工作
查看>>
通过刷bios的方式在win8.1平板上启动windows phone模拟器
查看>>
一道企业shell编程实战题-看看谁能快速搞定
查看>>
Windows Server8下补丁分发配置与iSCSI配置
查看>>
Ubuntu系统(十)-Web服务配置
查看>>
我的友情链接
查看>>
oracle hints的那点事
查看>>
安装多实例造成***S故障
查看>>
在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
查看>>
Windows Server 2012 R2 Hyper-v 虚拟机连接增强会话模式(通过 VMBus 远程访问)
查看>>
.NET应用架构设计—表模块模式与事务脚本模式的代码编写
查看>>
mysql建用户和修改密码和忘记密码的解决办法
查看>>
Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装
查看>>