V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
nanmu42
V2EX  ›  分享创造

DSF - 极简文件服务(Golang),简单的软件解决简单的需求

  •  1
     
  •   nanmu42 ·
    nanmu42 · 2021-03-30 12:40:40 +08:00 · 5033 次点击
    这是一个创建于 1334 天前的主题,其中的信息可能已经有所发展或是发生改变。

    DSF - 极简文件服务

    一个非常简单的 HTTP 文件服务,可以把本地的文件暴露到局域网上。

    仓库地址

    https://github.com/nanmu42/dsf

    动机

    虽然python3 -m http.server也能用,但是...

    • 有时我没法接受它单线程一次只能服务一个文件的特性;
    • dsf 提供复制粘贴友好的宿主机 IP 和端口号,这样我就不用自己去查询了。

    用法

    $ dsf -h
    dsf 的用法:
      -port int
        	监听端口 (默认 8080)
      -root string
        	文件根目录 (默认 "./")
    

    分享当前工作目录:

    $ dsf
    listening on: http://127.0.0.1:8080
    listening on: http://::1:8080
    listening on: http://192.168.0.6:8080
    listening on: http://fe80::1234:1e11:abec:5678:8080~~~~
    

    在特定端口分享特定目录:

    $ dsf -port 3000 -root ~/images
    listening on: http://127.0.0.1:3000
    listening on: http://::1:3000
    listening on: http://192.168.0.6:8080
    listening on: http://fe80::1234:1e11:abec:5678:8080
    

    安装

    适用于 Linux, Mac 和 Windows 预编译二进制可以在这里找到: https://github.com/nanmu42/dsf/releases/

    Gophers 可以这样安装:

    go install github.com/nanmu42/dsf@latest
    

    使用愉快!

    License

    MIT

    第 1 条附言  ·  2021-03-31 09:24:54 +08:00
    Edit1:

    这篇帖子现在成了大型轮子分享现场,评论的价值不低于正文。 : D
    37 条回复    2021-04-04 02:09:38 +08:00
    yeqizhang
        1
    yeqizhang  
       2021-03-30 12:56:43 +08:00 via Android   ❤️ 1
    能说说实际应用场景吗?分享文件?
    nanmu42
        2
    nanmu42  
    OP
       2021-03-30 13:06:11 +08:00
    @yeqizhang 对我来说,主要是:
    * 内网分享打包好的程序 /apk/前端项目;
    * 大文件内网传输,比企业 IM 快一些。
    oott123
        3
    oott123  
       2021-03-30 13:11:22 +08:00 via Android   ❤️ 1
    此时一位 darkhttpd 用户路过…
    nanmu42
        4
    nanmu42  
    OP
       2021-03-30 13:12:46 +08:00
    @oott123 哈哈哈,感谢路过。
    yeqizhang
        5
    yeqizhang  
       2021-03-30 13:28:12 +08:00 via Android
    @nanmu42 好的,谢谢,请问这个是直接在 exe 目录下直接跑命令就可,还是有个安装过程,自动配了环境变量?
    Tvulin
        6
    Tvulin  
       2021-03-30 13:34:36 +08:00   ❤️ 1
    README 里面指定端口似乎写错了...
    上面给定的 3000 端口,下面写的 8080
    nanmu42
        7
    nanmu42  
    OP
       2021-03-30 13:35:33 +08:00
    @yeqizhang Windows 的话,推荐下载后改名`dsf.exe`,放到你的 path 里,就可以在 cmd 里执行了。
    如果不是特别习惯使用命令行,也可以直接双击执行,就是参数没法调整,而且当前工作目录不好确定。
    nanmu42
        8
    nanmu42  
    OP
       2021-03-30 13:37:16 +08:00
    @Tvulin 噢,真的是,谢谢你提醒,我改下。 (偷懒复制粘贴被发现了
    不过 V2EX 没法编辑,这里就改不了了。
    yeqizhang
        9
    yeqizhang  
       2021-03-30 13:42:20 +08:00   ❤️ 1
    @nanmu42 ok,挺小巧的,mark 一下,以后可能路由器上可以搞一个,自己编译一下
    love
        10
    love  
       2021-03-30 13:46:23 +08:00   ❤️ 1
    我现在用的是 https://github.com/svenstaro/miniserve/ 这个可以上传文件这点不错的,有时我用手机需要上传文件到电脑用这个也方便
    missdeer
        11
    missdeer  
       2021-03-30 14:05:07 +08:00   ❤️ 1
    我也写过个类似的 https://github.com/missdeer/transfer/,支持了 http3 在某些环境下简直美滋滋
    chenset
        12
    chenset  
       2021-03-30 14:07:36 +08:00   ❤️ 1
    nginx 不是更简单吗
    nanmu42
        13
    nanmu42  
    OP
       2021-03-30 14:16:28 +08:00
    @chenset 见仁见智吧,我自己喜欢即用即走。
    XIU2
        14
    XIU2  
       2021-03-30 15:27:23 +08:00   ❤️ 1
    我的一些小项目中附带的 Pages 需要在 git push 前预览一下网页效果。
    因为是 Windows 系统,所以平时我都是用 Caddy,试了下你这个效果一样(连命令行参数都一样)。

    不过 Caddy 的有 20 MB (感觉有点大材小用),你这个就 4.40 MB~
    jerrodpoole
        15
    jerrodpoole  
       2021-03-30 15:29:28 +08:00   ❤️ 1
    rclone.exe serve http --addr :8080 --user admin --pass password e:/
    ↑一直用 rclone,也是一条命令搞定支持。也支持 serve webdav/sftp/dlna/ftp 等等
    JustSong
        16
    JustSong  
       2021-03-30 16:03:45 +08:00   ❤️ 1
    我之前也用 Go 写了一个,供参考: https://github.com/songquanpeng/go-file
    0o0O0o0O0o
        17
    0o0O0o0O0o  
       2021-03-30 17:32:10 +08:00 via Android   ❤️ 1
    loading
        18
    loading  
       2021-03-30 17:51:02 +08:00 via Android   ❤️ 1
    nginx 不好么?
    或者同是 golang 的 caddy 。
    aheadlead
        19
    aheadlead  
       2021-03-30 17:56:37 +08:00 via iPhone   ❤️ 1
    赞 能不能考虑集成个 upnp ?
    SenLief
        20
    SenLief  
       2021-03-30 18:19:00 +08:00   ❤️ 1
    @love 如果是安卓手机不妨下载一个叫 文件闪传的 app,类似于 ftp,我现在拿来管理相册,传文件很好用。
    love
        21
    love  
       2021-03-30 18:39:08 +08:00   ❤️ 1
    @SenLief 你说的这个是类似 miui 这种文件管理器自带的 ftp 功能吧,也是电脑上可以直接浏览手机内容,且是在文件管理器里,比浏览器要方便传文件吧。
    但是传单个或少量文件还是 miniserve 这种方便,因为不需要先在手机打开 ftp 功能再在电脑上打开手机管理界面复制文件。
    nanmu42
        22
    nanmu42  
    OP
       2021-03-30 19:15:06 +08:00
    @aheadlead 感谢意见。那样就有点重了 XD
    Kobayashi
        23
    Kobayashi  
       2021-03-30 22:04:23 +08:00 via Android   ❤️ 1
    @love 上传管理我用这个 https://github.com/filebrowser/filebrowser

    楼主这需求其实直接 Nginx 就完事儿了。
    kukat
        24
    kukat  
       2021-03-31 02:11:31 +08:00   ❤️ 1
    发现好多轮子 哈哈
    我用 caddy
    Cbdy
        25
    Cbdy  
       2021-03-31 07:51:49 +08:00 via Android   ❤️ 1
    npx serve
    root01
        26
    root01  
       2021-03-31 09:03:28 +08:00   ❤️ 1
    chfsgui 最香了
    iminto
        27
    iminto  
       2021-03-31 09:24:31 +08:00   ❤️ 1
    chfs 是最香的。是我找到的唯一一个满足我需求的。

    权限配置很细。未登录可以查看,登陆可以编辑。很多网盘不登陆要么啥都能干,要么就算查看都看不了。而且还支持 webdav 。

    可惜就是不开源,而且是 C 语言写的。
    windardyang
        28
    windardyang  
       2021-03-31 12:58:44 +08:00   ❤️ 1
    😀, 看下我这个,不但提供服务器 ,还提供下载器。[godown]( https://github.com/windard/godown/), 同 Golang
    internelp
        29
    internelp  
       2021-03-31 14:35:11 +08:00   ❤️ 1
    挺好用的工具,赞一个。
    anxn
        30
    anxn  
       2021-03-31 16:10:19 +08:00 via Android   ❤️ 1
    建议 readme 放一张演示截图
    anxn
        31
    anxn  
       2021-03-31 16:37:11 +08:00
    @anxn 用了 不错
    macy
        32
    macy  
       2021-03-31 20:52:49 +08:00   ❤️ 1
    我也写了类似的,也是 electron,没有遇到编译的问题,感觉挺快的,https://github.com/williamnie/netSend,纯 js 的,流下载,内网能跑满带宽
    Y29tL2gwd2Fy
        33
    Y29tL2gwd2Fy  
       2021-04-01 01:54:44 +08:00 via Android   ❤️ 1
    我太菜了 sftp 路过
    bequt
        34
    bequt  
       2021-04-01 07:37:42 +08:00   ❤️ 1
    在用站内 webd,虽然有广告,但是用 c 写的程序就是爽
    bequt
        35
    bequt  
       2021-04-01 07:40:11 +08:00   ❤️ 1
    来吧 来吧,一起分享出来吧。看来需求还是有的
    cubecube
        36
    cubecube  
       2021-04-02 19:21:32 +08:00   ❤️ 1
    everything 开 http 就有这个功能
    linux 开个 nginx 似乎也解决了
    flynaj
        37
    flynaj  
       2021-04-04 02:09:38 +08:00 via Android   ❤️ 1
    golang 几行代码就可以写出来确实方便快捷。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.