GitHub 項目推薦 | Bigfile 一個支持通過多種方式管理文件的系統

2019-09-16     Go語言中文網

github: https://github.com/bigfile/bigfile

中文文檔:https://learnku.com/docs/bigfile

Go語言實現。

基本介紹

Bigfile 是使用 Golang 開發的一個文件傳輸管理系統,支持通過 HTTP API,RPC 調用以及 FTP 客戶端管理文件。它構建於許多優秀的開源項目之上,基於資料庫實現了一個虛擬的文件組織系統,在 Bigfile 中您可以看到熟悉的文件夾和文件,這種實現方式也是我們權限控制的基礎。在底層,Bigfile 將任何文件切分成 1 MB 的文件塊存儲, 我們稱之為 Chunk ,每個 Chunk 依據 sha256 算法計算 Hash 值相互區分,相同的 Chunk 只會被存儲一次。 我們用一張圖來展示 Bigfile 的設計架構圖:

Bigfile 是一個多應用系統,您可以創建多個應用,我們稱之為 APP ,每個 APP 都有自己的空間, APP 之間相互隔離,互不干擾,互不侵犯。為了安全起見,我們不希望把應用密鑰暴露給任何使用某個應用的人,因此每個 APP 應該創建具有某個權限的 Token 去操作文件。您可以限制 Token 僅僅能訪問某個目錄,設置失效時間,可用次數,只讀訪問以及限制使用 IP。我們也提供 HTTPS ,FTPS 以及帶有雙端驗證功能的 RPC 服務,操作簡單,使用方便,您唯一要做的使用我們提供的命令行工具生成證書,並且在啟動服務的時候指定證書即可。

下載二進位包

進入 https://github.com/bigfile/bigfile/releases 頁面下載對應平台最新的二進位包。

MacOS

在 MacOS 上安裝,除了其他選擇之外,還可以通過 brew 直接安裝:

brew install bigfile/tap/bigfile

snapcraft

也可以通過 snapcraft 安裝:

sudo snap install --classic bigfile

deb/rpm:

從 release page 下載 .dep 或者 .rpm 文件,通過命令 dpkg -i 或者 rpm -i 安裝

scoop

在 Windows 除了通過二進位安裝,也可以通過 scoop 安裝:

$ 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

這條命令過後,會在主機上相應的目錄下生成 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

啟動 RPC Server

bigfile rpc:start --ca-cert ca.pem --server-cert server.pem --server-key server.key

啟動 FTP Server

bigfile ftp:start --tls-enable --cert-file server.pem --key-file server.key

項目作者:gamelife1314,推薦給需要的你。歡迎使用或 star。

歡迎推薦優秀 Go 語言項目給我們!

文章來源: https://twgreatdaily.com/zh-hk/jrb8Om0BJleJMoPMVULw.html