Skip to content

futuweb/cossync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

腾讯云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 密钥有效期,单位s
  • strict 单个文件出错是否停止上传,默认值true
  • localPath 为本地要同步的文件的根目录。localPath中的内容将被一一同步到remotePath
  • remotePath 腾讯COS存储根目录,以/开头和结尾 。例如:/test/。目前只支持一级
  • maxAge 设置cache-control头为指定的max-age
  • mime 中的default表示是否让cossync模块根据后缀名解析MIME(使用mime模块),其它键值表示需要自定义MIME
  • timeout 连接超时时间,单位s

V5 BUCKET 特殊配置项说明:

  • bucket 格式为 {bucket}-{appid}
  • version 指定使用的cos版本。 目前只有: v3v5
  • region 表示bucket的所属地域。
  • globConfig 参考node-glob 。 主要用于配置筛选上传文件。
  • timeout 连接超时时间,单位ms,默认为120000ms

CLI使用

如果没有指定使用的配置文件,将在proccess.cwd()目录下寻找cossyncconf.json文件。

cossync conf.json

V5 模块API

Cossync(options)

构建函数,返回Cossync实例。

参数:

  • options参数对象
    • secretId COS secretId
    • secretKey COS secretKey
    • bucket COS {bucket}-{appid}
    • strict 单个文件出错是否停止上传,默认值true
    • remotePath 腾讯COS存储根目录,以/开头和结尾 。例如:/test/。目前只支持一级
    • progress 上传进度回调函数
    • timeout 单个文件超时时间,默认值120000ms
    • skipWhenExist 默认值为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 AppId
    • secretId COS secretId
    • secretKey COS secretKey
    • expired 密钥有效期,单位s
    • bucket COS bucket名称
    • maxAge 设置cache-control头为指定的max-age
    • timeout 连接超时时间,单位s
    • strict 单个文件出错是否停止上传,默认值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参数为空,errError实例;成功,err === undefinedresult参数会返回相应的上传状态。

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

  • 基本功能实现

About

腾讯云COS同步(批量上传)工具

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy