项目介绍

Obsync - 主流公有云对象存储服务同步工具
项目地址:Obsync

Obsync
Obsync是一款基于go编写,支持多个对象储存平台(cos,obs,oss,qiniu,upyun)的数据同步工具,同时支持通过编写插件来支持它方对象存储平台同步.支持一对多同步到同一个以及不同的对象存储平台.支持Docker部署?.

本文以本地编译的方式运行,Docker部署请参考项目文档,建议使用 golang 1.11 及以上版本进行编译.

搭建编译环境

这里不再细述,自行某度,谷歌
Linux下安装Go环境

编译前的准备

搭建好编译环境后,请添加go代理(海外服务器可跳过这步)
否则下载mod时会出现connect: connection refused

go env -w GOPROXY=https://goproxy.cn,direct

克隆Obsync项目到你的go工作空间,go官方建议目录$HOME/go

11.02修正

"由于Obsync master和develoop分支代码有少许问题,导致config.json内部分参数读取失败,将影响部分功能."
这里我们采用Obsync稳定的1.2.0版本
git clone https://github.com/mingcheng/obsync.git

# 下载
wget https://github.com/mingcheng/obsync/archive/refs/tags/1.2.0.tar.gz
# 解压到go工作空间
tar -zxvf 1.2.0.tar.gz -C ~/go

编译 && 安装

进入解压好的Obsync项目根目录,执行make && make install,等待编译完成
obsync编译 2021-10-23T14:22:49.png

编写配置文件 && 运行

编译与安装后,会在项目target文件夹生成可执行文件,同时也会在go工作空间下bin目录生成可执行文件.
进入target目录,编写配置文件config.json,更多参数详情请查看项目MD
(key,secret,endpoint信息请到对象存储平台获取,这里以阿里云oos为例)

vi config.json

{
  "debug": true,
  "root": "/home/tenir/test",
  "standalone": true,
  "interval": 24,
  "buckets": [
    {
      "type": "oss",
      "key": "",
      "secret": "",
      "thread": 5,
      "name": "",
      "timeout": 60,
      "force": true,
      "endpoint": ""
    }
  ]
}

obsync config.json 2021-10-23T14:41:42.png

配置定时同步

# config.json中,这两个参数用于设置 定时同步的开启关闭,同步的时间间隔.
# standalone 的 interval 默认单位时间为小时.
  "standalone": true
  "interval": 24

注意待同步的文件夹读写权限
完成配置文件编写后,执行命令运行

./obsync -f config.json

obsync运行 2021-10-23T14:54:57.png

观察控制台日志输出,同步成功后留意阿里云oss.

Js点击事件被多次执行

问题

当前点击事件是套在一个外部事件中的。当外部事件执行时,点击事件的执行次数会被累积,但由于未触发点击事件,故不会产生执行效果。当触发点击事件时,累积的点击事件将全部被执行,因此造成多次执行。

原绑定方法

function(){
    $("#btn_ok").click((e) => {
    }
}

解决方法

外部事件执行,将点击事件与外部事件function()解绑,防止他存贮之前的事件。

function(){
    $("#btn_ok").unbind("click").click((e) => {
    }
}