分享一个目录增量备份工具

https://github.com/purekid/Icbackup

PHP Increasement Backup 目录增量打包备份

Features 功能点

  • 可配置
  • 增量备份
  • 自动ZIP打包
  • 多线程支持
  • 支持多远端SCP同步

Usage 用法

    $ ./bin/icbackup sample/config.json

Config 配置文件 (sample.json)

{
    "log" : "/var/www/backup/backup.log",

    "tasks":[
        {
            "enable" : true,
            "multiThread" : false,
            "onlySaveHistory": false,
            "threadCount" : 1,
            "ignoreZipTimestampBefore": 1412995946, 
            "name" : "client",
            "dir" : "/var/www/files/a",
            "storage" : "/var/www/backup",
            "scp":[
                {
                "host" : "192.168.1.2",
                "port" : "22",
                "user" : "michael",
                "path" : "/home/michael/backup",
                "password" : "123456"
                },
                {
                    "host" : "192.168.1.3",
                    "port" : "22",
                    "user" : "michael",
                    "path" : "/home/michael/backup",
                    "password" : "123456"
                }
            ],
            "ignoreUnmodifiedDir":[
                "formQR",
                "image",
                "contactQR",
                "html"
           ]

       }
   ]
}

待备份的目录a及其结构

--a
  └--b
  └--c

1.假设首次运行脚本时间为2014年10月1日,生成history并打包整个a目录,并生成a-2014-10-1-0-0.zip,因为第一次运行,目录是全增量,结构与初始目录完全相同:

--a
  └--b
  └--c

2.2014年10月1日-2日之间,目录中有多了几个文件,结构如下

--a
  └--b
     └--d
  └--c
  └--e

3.此时于3日凌晨再次执行脚本,会扫描相对于上次执行脚本发生的目录变化,生成增量ZIP包,a-2014-10-3-0-0.zip内文件结构如下:

--a
  └--b
     └--d
  └--e

4.若config中配置有SCP项,打包后会自动SCP到远端目录保存

5.支持多线程,需要PHP支持pthreads扩展,同时讲配置中 'multiThread'设为true,'threadCount'设为使用的线程数量即可

6.配置中 'ignoreUnmodifiedDir' 是很重要的一项,对性能提升很关键,举个栗子:

对于一般的程序类项目,附件目录的结构一般是一致的,譬如最后一级目录存放图片的目录都名为images,存放文档的都名为docs

 --a
  └--b
     └--images
     └--docs
  └--c
     └--images
     └--docs
  └--e
     └--images
     └--docs

此时你可以如此配置: "ignoreUnmodifiedDir" : ["images","docs"] ,这样的作用就是当发现名为images或docs的目录本身未发生变化(文件夹的ftime时间),不会进入目录里去递归扫描,对于性能会有很大提升。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1
Summer

是否能说下用例, 在什么情况下能用上.

10年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!