#file-server #file-serving #file-transfer #http-server #multi-platform #standalone #file-sharing

app quick-serve

Quick Serve:一个零配置、多平台、多协议的独立服务器,用于快速文件服务,带有或没有GUI

5个版本

新版本 0.2.1 2024年8月18日
0.2.0 2024年4月15日
0.1.2 2024年4月8日
0.1.1 2024年3月5日
0.1.0 2024年1月9日

#138开发工具

MIT 许可证

190KB
893

Build Status crates.io

Logo

Quick-serve

无需设置,零配置,多平台,多协议,独立服务器,供开发人员或任何想要在网络中快速提供文件的人使用。

它既可以无头使用,也可以使用GUI提供更友好的体验。

Screenshot

动机

作为一名嵌入式软件工程师,我在各种开发任务过程中经常遇到需要在主机和目标设备之间无缝传输文件的需求。无论是升级系统镜像、从引导加载程序启动Linux内核、从远程仓库检索包、获取Git仓库或与隔壁的同事共享文件,持续的需求是一个快速直观的文件服务器。能够快速设置FTP、TFTP或HTTP服务器,在处理最多样化的文件交换场景中,被证明是一种节省时间和高效的方法。

我开发这个应用程序是为了学习Rust,因为我找不到一个无缝支持多种协议、无头并且支持各种平台的应用程序解决方案。与许多专为Windows或Linux定制、有或没有UI的专用服务器不同,我的应用程序旨在通过提供一种通用、多平台和协议无关的解决方案来弥合这一差距。

用法

Quick-serve

Usage: quick-serve [OPTIONS]

Options:
  -b, --bind-ip=<IP>     Bind IP [default: 127.0.0.1]
  -p, --serve-dir=<DIR>  Path to serve [default: /tmp/]
  -v, --verbose...       Verbose logging
  -H, --http[=<PORT>]    Start the HTTP server [default port: 8080]
  -f, --ftp[=<PORT>]     Start the FTP server [default port: 2121]
  -t, --tftp[=<PORT>]    Start the TFTP server [default port: 6969]
  -h, --help             Print help (see more with '--help')
  -V, --version          Print version

依赖关系

Fedora

sudo dnf install glibc2-devel atk-devel cairo-devel pango-devel gdk-pixbuf2-devel gtk3-devel

Ubuntu

sudo apt install libatk1.0-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev

安装和运行

cargo install quick-serve
quick-serve

构建和运行

git clone https://github.com/joaofl/quick-serve.git
cd quick-serve
cargo run --release

ui 是可选的,可以通过以下方式避免编译

cargo build --release --no-default-features

即使编译了,UI仍然可以在运行时禁用。

交叉编译

  • 安装Docker
  • 安装Cross
cargo install cross --git https://github.com/cross-rs/cross
  • 构建
./cross-build-all.sh

测试

sudo apt install wget tftp
cargo build
cargo test

实现目标

支持的协议

  • FTP
  • HTTP
  • TFTP
  • HTTPS
  • DHCP
  • SFTP
  • NFS
  • SAMBA

接口

  • 命令行
  • 本地接口
  • Web接口
  • 终端接口

功能

  • 服务 n 个文件并退出
  • 服务 t 秒并退出
  • 显示正在服务的文件数量
  • 报告传输速率
  • 报告已传输的文件
  • 退出时显示统计信息
  • 根据协议对日志进行颜色编码
  • 添加日志过滤选项
  • 针对每个协议的特定日志进行细化

待办事项

  • 修复使用UI时的CPU使用过高问题

依赖关系

~139MB
~3.5M SLoC