a configurable node script to synce local assets to upyun cdn, compared via md5
CoffeeScript JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
.gitignore
Gruntfile.js
LICENSE
README.md
config.sample.json
package.json

README.md

Upyun Assets Syncer

一个可配置的又拍云CDN(upyun.com)素材同步程序,基于 NodeJS 和 CoffeeScritpt

为什么需要这个工具

  • 当CDN上的素材超过10000时,UPYUN的LISTING API无法将超过10000的文件信息返回,FTP亦然
  • 当本地素材发生频繁修改时,需要增量同步工具以减少同步所花费的时间
  • 当本地素材的同步时,需要配合特定的文件过滤逻辑时

这个工具是对 find + rsync 的扩展性补充。

安装 Install

# install coffee-script
sudo npm install -g coffee-script

# then install this tool
sudo npm install -g upyun-assets-syncer

运行 Run

# 根据config.json 中的设定执行同步操作
upsyncer -c config.json

#  根据config.json 中的设定模拟同步操作,在结果中列出所有要被上传的文件
upsyncer -c config.json -t

命令行参数 Command line arguments

# assign a job configuration file
-c, --config-file [FILE]

# simulate a sync job and output a report of job results
-t, --test-drive

配置文件 Configuration json

{

  "LOCAL_DEPOT_ROOT" : "/path/to/assets",

  "REGEX_FILE_NAME" : /[a-z0-9]{11}\.sgf/,

  "BUCKETNAME" : "__________",

  "USERNAME" : "________",

  "PASSWORD" : "________",

  "REVISION_SENSITIVE" : false,

  "PARALLELY" : true,

  "VERBOSE" : false,

  "WALK_OPTIONS" : {
    "followLinks" : false
  }

}

其中:

  • LOCAL_DEPOT_ROOT:String : 同步素材所在的根目录,其下的子目录将被遍历 (path to the root directory of assets)

  • REGEX_FILE_NAME:RegExp : 一个过滤文件名的正则表达式,只有满足表达式条件的文件才会被添加到同步的检查列表中。如果不提供这个设置,那么根目录下遍历到的所有文件将被进行同步 (A regular expression for file name clarking)

  • BUCKETNAME:String : UPYUN API 的 bucket name

  • USERNAME:String : UPYUN API 的 user name

  • PASSWORD:String : UPYUN API 的 password

  • REVISION_SENSITIVE:Boolean : 当True时,将对本地文件和服务器文件做 md5 比对,md5 不同的话,将会把本地文件重新上传 upyun (When true, the sync tool will compare md5 of local assets with remote, and upload the local asset if md5 results are not identical)

  • PARALLELY:Boolean : 当 True 时,将会采用并发操作,对于大文件量时,可以有效提高速度,但是在老版本的 NodeJS 上会遇到 http parse error (When true, will run job in paralle mode via node-async, this will significently reduce time consumption, but might cause http parse error in the node-upyun module)

  • VERBOSE:Boolean : 当 True 时,将输出操作中的具体调试信息 (When true, it will output debug messages)