golang分布式文件服务器,分享一个用go实现的分布式文件系统:godfs

godfs是一个用Go编写的轻量、快速、易用的分布式文件存储服务器,支持Docker并拥有清晰的日志。它提供原生客户端、HTTP API,支持文件分片保存、自动同步及只读节点。通过简单的命令行工具即可上传和下载文件,同时也提供了Docker部署方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

godfs

godfs.svg?branch=master

godfs 是一个用go实现的轻量,快速,简单易用的分布式文件存储服务器。

godfs 开箱即用,并对docker支持友好。

835630cf605270e8bb8cfa9dfc6064e9.png

特性快速, 轻量, 开箱即用, 友好的API

易于扩展,运行稳定

非常低的资源开销

提供原生的客户端和Java客户端(还未开始)

提供HTTP方式的下载和上传API

清晰的日志帮助排查运行异常

支持不同平台下的编译运行: Linux, Windows, Mac

更好地支持docker容器

文件分片保存

完美的文件迁移解决方案

支持读写和只读文件节点

文件组内自动同步

安装请先安装golang1.9+

以CentOS7为例.

从最新的源码构建:yum install golang -y

git clone https://github.com/hetianyi/godfs.git

cd godfs

./make.sh

构建成功后, 三个文件会生成在./bin 目录下,分别是:

./bin/client

./bin/storage

./bin/tracker

将构建成功的二进制文件安装到目录 /usr/local/godfs:

./install.sh /usr/local/godfs

启动tracker服务:

/usr/local/godfs/bin/tracker [-c /your/tracker/config/path]

启动storage服务:

/usr/local/godfs/bin/storage [-c /your/storage/config/path]

然后你就可以在命令行直接使用 client 来上传和下载文件了。

当然要先设置trackers服务器设置(见下)

举个栗子:

上传一个文件:

client -u /you/upload/file

a848f4e8ef0af83b2942be37c7e5eea7.png

或者可以用一个更酷的命令来上传一个文件夹下所有的文件:

echo \"$(ls -m /f/foo)\" |xargs client -u

fa7bbea84187176351629e22d14a38c7.png

# 下载文件

client -d G01/10/M/2c9da7ea280c020db7f4879f8180dfd6 -n 123.zip

从最新源代码构建docker镜像:cd godfs/docker

docker build -t godfs .

强烈推荐使用docker来运行godfs.

最新的godfs的docker镜像可以在 docker hub 获取:

docker pull hehety/godfs

启动tracker服务器:

docker run -d -p 1022:1022 --name tracker --restart always -v /godfs/data:/godfs/data --privileged -e log_level="info" hehety/godfs:latest tracker

启动storage服务器:

docker run -d -p 1024:1024 -p 80:8001 --name storage -v /godfs/data:/godfs/data --privileged -e trackers=192.168.1.172:1022 -e bind_address=192.168.1.187 -e port=1024 -e instance_id="01" hehety/godfs storage

# 单机上部署多个storage最好加上命令: '-e port=1024'

这里,我们使用宿主机上的目录 /godfs/data 来存放上传的文件。

客户端命令:

-u string

the file to be upload, if you want upload many file once, quote file paths using """ and split with ","

example:

client -u "/home/foo/bar1.tar.gz, /home/foo/bar1.tar.gz"

-d string

the file to be download

-l string

custom logging level: trace, debug, info, warning, error, and fatal

-n string

custom download file name

--set string

set client config, for example:

client --set "tracker=127.0.0.1:1022"

client --set "log_level=info"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值