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 語言項目給我們!