Bigfile 用新的方式管理文件,支持 HTTP,RPC 以及 FTP 协议

gamelife1314 · · 1492 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

> github: https://github.com/bigfile/bigfile > > 中文文档:https://learnku.com/docs/bigfile > > 希望社区的朋友们喜欢,欢迎批评和指导 ### 基本介绍 `Bigfile` 是基于 [Golang](<https://golang.google.cn>) 开发的一个文件传输管理系统,支持通过 `HTTP API`,`RPC` 调用以及 `FTP` 客户端管理文件。它构建于许多优秀的开源项目之上,基于数据库实现了一个虚拟的文件组织系统,在 `Bigfile` 中您可以看到熟悉的文件夹和文件,这种实现方式也是我们权限控制的基础。在底层,`Bigfile` 将任何文件切分成 `1 MB` 的文件块存储, 我们称之为 **Chunk** ,每个 `Chunk` 依据 `sha256` 算法计算 Hash 值相互区分,相同的 `Chunk` 只会被存储一次。 我们用一张图来展示 `Bigfile` 的设计架构图: ![image](https://cdn.learnku.com/uploads/images/201909/16/1113/NLcuklHtHj.png!/fw/1240) `Bigfile` 是一个多应用系统,您可以创建多个应用,我们称之为 **APP** ,每个 `APP` 都有自己的空间, `APP` 之间相互隔离,互不干扰,互不侵犯。为了安全起见,我们不希望把应用密钥暴露给任何使用某个应用的人,因此每个 `APP` 应该创建具有某个权限的 **Token** 去操作文件。您可以限制 `Token` 仅仅能访问某个目录,设置失效时间,可用次数,只读访问以及限制使用 IP。我们也提供 `HTTPS` ,`FTPS` 以及带有双端验证功能的 `RPC` 服务,操作简单,使用方便,您唯一要做的使用我们提供的命令行工具生成证书,并且在启动服务的时候指定证书即可。 ### 下载二进制包 进入 [https://github.com/bigfile/bigfile/releases](https://github.com/bigfile/bigfile/releases) 页面下载对应平台最新的二进制包。 ### MacOS 在 MacOS 上安装,除了其他选择之外,还可以通过 [brew](https://brew.sh/) 直接安装: ``` brew install bigfile/tap/bigfile ``` ### snapcraft 也可以通过 [snapcraft](https://snapcraft.io) 安装: ``` sudo snap install --classic bigfile ``` ### deb/rpm: 从 [release page](https://github.com/bigfile/bigfile/releases) 下载 `.dep` 或者 `.rpm` 文件,通过命令 `dpkg -i` 或者 `rpm -i` 安装 ### scoop 在 Windows 除了通过二进制安装,也可以通过 [scoop](https://scoop.sh) 安装: ``` $ scoop bucket add bigfile https://github.com/bigfile/bigfile-bucket.git $ scoop install bigfile ``` ### 从源码安装 如果您是 `Go` 语言开发者,可以下载源码直接运行: ``` go get -u -v github.com/bigfile/bigfile go run artisan/bigfile.go --version ``` 或者您也可以直接安装在本地,这将在您的 `${GOPATH}/bin` 目录下生成一个名为 `artisan` 的可执行文件,Windows 平台下将会生成 `artisan.exe` : ``` go install -a -v github.com/bigfile/bigfile/artisan ```` 或者可以直接在源码目录下构建,这会在当前目录下生成一个名为 `bigfile` 的可执行文件,Windows 平台下将会生成 `bigfile.exe` : ``` go build artisan/bigfile.go ``` ### 生成证书 生成证书的入口在 `rpc` 子命令下,但是可以用在任何你想用的地方: ``` bigfile rpc:make-cert ``` ![image](https://cdn.learnku.com/uploads/images/201909/16/1113/UPY3xfO5bQ.png!/fw/1240) 这条命令过后,会在主机上相应的目录下生成 6 个证书文件。以 `ca` 为前缀的表示证书机构,只有证书机构才具有资质进行签发证书,我们生成的 `ca` 证书是自签名证书,自签名证书一般不被系统所信任,不过你可以将它加到系统的可信任证书库中。以 `server` 为前缀的表示服务器证书,服务器证书可以添加可信任 `IP`,通过参数 `--server-cert-ips` 指定。以 `client` 为前缀的用于客户端,这个主要用在 `RPC` 服务中实现双端验证。`.pem` 为后缀的表示经过 `PEM` 编码的证书文件,`.key` 为后缀的表示证书密钥。 ### 启动 HTTP Server ``` bigfile http:start --cert-file server.pem --cert-key server.key ``` ![image](https://cdn.learnku.com/uploads/images/201909/16/1113/iEsBGByYvp.png!/fw/1240) ### 启动 RPC Server ``` bigfile rpc:start --ca-cert ca.pem --server-cert server.pem --server-key server.key ``` ![image](https://user-images.githubusercontent.com/10297148/64930348-a64d7700-d862-11e9-95fb-c9bbb93d9f83.png) ### 启动 FTP Server ``` bigfile ftp:start --tls-enable --cert-file server.pem --key-file server.key ``` ![image](https://cdn.learnku.com/uploads/images/201909/16/1113/oe9TuXCj8o.png!/fw/1240)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1492 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传