cossync
v1.7.0
Published
sync files with qcloud COS (cloud storage)
Downloads
20
Readme
腾讯云COS (V3,V5 BUCKET)文件夹同步(批量上传)工具
支持V3,V5版本的bucket。
腾讯云文档: https://cloud.tencent.com/document/product/436/12264
安装
cmd:
npm install -g cossync
require:
npm install --save cossync
CLI配置
准备一个配置文件,例如conf.json
:
// V3 BUCKET
{
"appId":"100012345",
"secretId":"ABCDABCDABCDABCDABCDABCD",
"secretKey":"abcdabcdabcd",
"expired":1800,
"bucket":"bucketName",
"remotePath":"/test/",
"localPath":"./",
"maxAge":31536000,
"strict":true ,
"timeout":30,
"mime":{
"default": true,
".test": "text/plain"
}
}
//v5 bucket
{
"secretId":"SGFDDGHFGFHHSEREWTRETRETER",
"secretKey":"FGHGFHGFHGFHAASRETRET",
"bucket":"testname-12500000",
"strict":true,
"version":"v5",
"region":"na-ashburn",
"remotePath":"/test/",
"localPath": "./test",
"maxAge":31536000, //cache-control
"expires": 300, //content -expries
"timeout": 120000, // 单个文件上传超时时间,单位为ms
"mime":{ //content-type
"default": true,
".test": "text/plain"
},
"globConfig":{
"ignore":["node_modules/**"],
"nodir":true
}
}
V3 BUCKET配置项说明:
bucket
COS bucket名称expired
密钥有效期,单位sstrict
单个文件出错是否停止上传,默认值true
localPath
为本地要同步的文件的根目录。localPath
中的内容将被一一同步到remotePath
中remotePath
腾讯COS存储根目录,以/
开头和结尾 。例如:/test/
。目前只支持一级maxAge
设置cache-control
头为指定的max-age
值mime
中的default
表示是否让cossync模块根据后缀名解析MIME(使用mime
模块),其它键值表示需要自定义MIMEtimeout
连接超时时间,单位s
V5 BUCKET 特殊配置项说明:
bucket
格式为 {bucket}-{appid}version
指定使用的cos版本。 目前只有:v3
和v5
。region
表示bucket的所属地域。globConfig
参考node-glob 。 主要用于配置筛选上传文件。timeout
连接超时时间,单位ms,默认为120000ms
CLI使用
如果没有指定使用的配置文件,将在proccess.cwd()
目录下寻找cossyncconf.json
文件。
cossync conf.json
V5 模块API
Cossync(options)
构建函数,返回Cossync
实例。
参数:
options
参数对象secretId
COS secretIdsecretKey
COS secretKeybucket
COS {bucket}-{appid}strict
单个文件出错是否停止上传,默认值true
remotePath
腾讯COS存储根目录,以/
开头和结尾 。例如:/test/
。目前只支持一级progress
上传进度回调函数timeout
单个文件超时时间,默认值120000
msskipWhenExist
默认值为false则上传所有文件,值为true则跳过已上传的文件
progress(data)
参数:
data.success
成功文件个数data.fail
失败文件个数data.total
总文件个数data.successList
成功列表data.failList
失败列表
Cossync#sync(localPath [,globConfig [,callback]])
实例方法,收集上传文件并上传文件接口。
Cossync#upload(localPath , files)
上传文件接口。
V5 bucket 案例
var cossync = require('cossync').cossync;
var conf = {
secretId:'DGFDFGDFGDFGDF',
secretKey:'DFGDFGDFGDFGDFGDFDFGDFG',
bucket:'ertretretr-12500000',
strict:true,
skipWhenExist:true,
version:'v5',
region:'na-ashburn',
remotePath:'/test/',
localPath: '/data',
timeout: 120000, // 单个文件上传超时时间,单位毫秒,默认为2分钟
maxAge:31536000, //cache-control
expires: 300, //content -expries
mime:{ //content-type
default: true,
".test": "text/plain"
},
globConfig:{
ignore:["node_modules/**"],
nodir:true
}
};
var cos = cossync(conf);
cos.sync(conf.localPath , conf.globConfig , function(err , result){
console.log(err , result);
});
返回:
{total: files.length || 0 , success:0 , fail:0 , successList:[] , failList:[]};
V3 模块API
Cossync(options)
构建函数,返回Cossync
实例。
参数:
options
参数对象appId
COS AppIdsecretId
COS secretIdsecretKey
COS secretKeyexpired
密钥有效期,单位sbucket
COS bucket名称maxAge
设置cache-control
头为指定的max-age
值timeout
连接超时时间,单位sstrict
单个文件出错是否停止上传,默认值true
remotePath
腾讯COS存储根目录,以/
开头和结尾 。例如:/test/
。目前只支持一级progress
上传进度回调函数timeout
单个文件超时时间,单位毫秒,默认为120000ms(2分钟)
progress(data)
参数:
data.success
成功文件个数data.fail
失败文件个数data.total
总文件个数
Cossync#sync(localPath [,mimeConf [,maxAge[,callback]]])
实例方法,上传文件接口。
localPath
<String> 本地上传的文件目录 必须存在mimeConf
<Object> 后缀名,见CLI配置项解释 可选maxAge
<Number> 缓存有效期 可选callback
<Function> 上传结束回调函数 可选
callback(err, result)
,如果上传失败result
参数为空,err
为Error
实例;成功,err === undefined
, result
参数会返回相应的上传状态。
result
参数如下:
{
code: 0,
files:
[ 'demo_001.html',
'demo_002.html',
'demo_003.html'
],
localPath: 'E:/source/2016_11/4/demo/',
remotePath: '/test/',
bucket: 'bug',
count: {
total: 3,
success: 3,
fail: 0
}
}
V3 bucket 案例
var cossync = require('cossync').cossync;
var conf = {
"appId":"100012345",
"secretId":"ABCDABCDABCDABCDABCDABCD",
"secretKey":"abcdabcdabcd",
"expired":1800,
"bucket":"bucketName",
"remotePath":"/test/",
"localPath":"./",
"maxAge":31536000,
"strict":true ,
"timeout":30,
"mime":{
"default": true,
".test": "text/plain"
}
}
var cos = cossync(conf);
cos.sync(conf.localPath conf.mime, conf.maxAge || conf.cacheMaxAge || 0, function(err , result){
console.log(err , result);
});
Cossync.setBrowserLog(false|true)
静态方法,浏览器环境中(如electron)是否开户浏览器日志输出。默认关闭。
历史
1.7.0 2024-07-24
- v5支持UseAccelerate参数,控制是否支持开启加速域名,默认为false则不开启,true则开启加速域名
1.6.0 2024-05-11
- v5支持skipWhenExist参数,默认值为false则上传所有文件,值为true则跳过已上传的文件。
1.5.3 2023-08-08
- 修复V5上传文件名含中文失败的问题
1.5.2 2021-01-04
- 去除调试日志
1.5.1 2020-05-20
- 修复v5版本log出的速度为NaN的问题,上传数据精确到KB/s
1.5.0 2020-02-27
- V5 bucket支持timeout参数,默认为120000ms
1.4.3 2019-12-03
- 上传失败时抛出详细异常
1.4.0 2018-08-15
- 支持V5 bucket
- 兼容旧版v3 bucket
- 修改引入方式
1.3.1 2017-03-27
- 优化callback回调
- 修改=>箭头函数为
function
1.3.0 2017-01-16
- 增加上传进度
- 增加连接超时设置
- 增加单个文件报错是否停止上传
- 兼容浏览器日志打印,完善日志打印
1.2.0 2016-11-08
- 增加出错时3次重试
- 出错时退出返回码改为
1
1.1.0 2016-09-07
root
变更为remotePath
- 增加
localPath
选项设置本地目录 - 增加缓存头控制选项
cacheMaxAge
- 增加MIME配置项
mime
- 规整控制台输出
1.0.1 2016-09-04
- 修复命令行无法使用的问题
1.0.0 2016-09-04
- 基本功能实现