ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

藏在终端里的文件传输瑞士军刀:transfer.sh开源命令行分享工具完全入门

藏在终端里的文件传输瑞士军刀:transfer.sh开源命令行分享工具完全入门 藏在终端里的文件传输瑞士军刀transfer.sh开源命令行分享工具完全入门【免费下载链接】transfer.shEasy and fast file sharing from the command-line.项目地址: https://gitcode.com/gh_mirrors/tr/transfer.shtransfer.sh是一个极简的开源命令行文件分享工具一条curl命令把本地文件上传立刻得到一个可直接分享的下载链接。它没有网页界面、没有注册登录所有操作都在终端完成支持加密、限时、限次下载还能自己私有化部署到本地或云存储。一、transfer.sh 是什么为什么需要它平时想给朋友传个文件你通常要借助网盘注册上传、或者临时开个分享站。而 transfer.sh 的思路完全不同把文件丢进终端换回一个链接。它由两部分组成客户端用法不需要安装任何东西只要系统里有curlLinux/macOS 自带就能向任意 transfer.sh 服务发送文件服务端程序一个用 Go 编写的轻量服务可以运行在你自己的机器、Docker 容器或云存储上。一句话概括它是藏在终端里的文件传输瑞士军刀—— 上传、加密、限次、限时、删除、杀毒扫描全部由命令行完成。核心亮点一览能力说明单条命令上传curl直接上传秒出分享链接下载链接带随机令牌无法通过猜测文件名找到别人的文件限次 / 限时下载通过请求头指定只许下载 1 次或只保留 1 天端到端加密用 GPG 或 AES 加密后再上传服务端加密服务器端 AES256 加解密仅限自建实例病毒扫描上传前 ClamAV 预扫描或送 VirusTotal 分析多存储后端本地磁盘、S3、Google Drive、Storj 四选一二、30 秒上手第一条 transfer.sh 上传命令假设你有一个文件hello.txt想生成一个分享链接只需要$ curl -v --upload-file ./hello.txt https://transfer.sh/hello.txt上传成功后终端会直接打印下载链接形如https://transfer.sh/1lDau/hello.txt注意链接中间的1lDau—— 这是一个随机生成的短令牌默认 10 位字符由 server/token.go 中的字符集随机组合而成。没有这个令牌别人几乎不可能枚举出你的文件这比裸文件名式的临时文件服务安全得多。下载同样简单$ curl https://transfer.sh/1lDau/test.txt -o test.txt # 或者 $ wget https://transfer.sh/1lDau/test.txt 小技巧链接前加/get/可获得强制下载的直链默认链接会在浏览器中内联显示文本类文件即https://transfer.sh/get/1lDau/test.txt。三、transfer.sh 进阶技巧加密、限次与限时transfer.sh 真正的军刀属性体现在下面这些请求头上——不用改任何配置只是多传几个参数。1. 限制下载次数$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H Max-Downloads: 1适合一次性交付场景文件被下载 1 次后就失效防止链接被反复转发。2. 设置文件保留天数$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H Max-Days: 1文件在服务端最多保留 1 天到期自动清除。3. GPG 端到端加密上传$ gpg --armor --symmetric --output - /tmp/hello.txt | curl --upload-file - https://transfer.sh/test.txt上传前本地加密服务端只存密文对方下载后再解密$ curl https://transfer.sh/1lDau/test.txt | gpg --decrypt --output /tmp/hello.txt4. 服务端 AES256 加解密仅限自建实例自建 transfer.sh 服务还支持让服务器代劳加解密# 上传时用密码加密 $ curl --upload-file ./hello.txt https://your-instance.tld/hello.txt -H X-Encrypt-Password: test # 下载时用密码解密 $ curl https://your-instance.tld/BAYh0/hello.txt -H X-Decrypt-Password: test⚠️ 官方提醒服务端加密意味着密码会经过服务器请只在自己的私有实例上使用此功能。5. 主动删除与病毒扫描每次上传的响应头里都会带一个X-Url-Delete指向一条只有你知道的删除地址调用它即可让文件即刻下线$ curl -X DELETE X-Url-Delete 响应头中的地址如果你收到来源不明的文件还可以让服务器帮你验毒# 用 ClamAV 扫描 $ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan # 送 VirusTotal 分析返回报告直链 $ curl -X PUT --upload-file ./sample https://transfer.sh/sample/virustotal更多组合玩法备份加密 MySQL 数据、打包上传整个目录、多文件合并下载等都整理在 examples.md 中值得一读。四、一行 shell 别名让 transfer 变成肌肉记忆每次敲完整 curl 太啰嗦把下面这段加进.bashrc或.zshrctransfer() { curl --progress-bar --upload-file $1 https://transfer.sh/$(basename $1) | tee /dev/null echo } alias transfertransfer从此只要$ transfer hello.txt就会看到进度条并在结束时打印分享链接。examples.md 中还提供了 fish-shell 版、Windows 版以及上传后自动复制下载命令到剪贴板的增强版按需取用。五、私有部署5 分钟搭一个自己的 transfer.sh 文件传输站transfer.sh 仓库本身就是完整的服务端源码官方立场也建议你自建实例数据掌握在自己手里。方式一Docker 一键启动推荐项目提供了官方镜像构建过程见 Dockerfile基于 Alpine Go 静态编译最终运行在极简的scratch基础镜像上体积很小# 本地磁盘存储5 秒跑起来 $ docker run --publish 8080:8080 dutchcoders/transfer.sh:latest --provider local --basedir /tmp/官方更推荐带-noroot后缀的镜像它以最简权限UID/GID 5000运行能显著减小攻击面。方式二从源码构建$ git clone https://gitcode.com/gh_mirrors/tr/transfer.sh $ cd transfer.sh $ go build -o transfersh main.go然后用本地存储启动一个开发实例$ go run main.go --providerlocal --listener :8080 --temp-path/tmp/ --basedir/tmp/四种存储后端怎么选服务启动时必须指定--provider对应 cmd/cmd.go 中对存储后端的分发逻辑实现位于 server/storage/ 目录provider适用场景实现文件local最简单文件存本地磁盘适合个人/内网local.gos3生产环境首选也兼容 MinIO 等 S3 协议服务s3.gogdrive用 Google Drive 当网盘零存储成本gdrive.gostorj去中心化加密存储网络storj.go以 S3 为例只需额外提供访问密钥和桶名$ transfersh --provider s3 \ --aws-access-key KEY --aws-secret-key SECRET \ --bucket BUCKET --s3-region eu-west-1部署时的安全参数速查所有启动参数同时可用环境变量都定义在 cmd/cmd.go 中自建时建议重点关注--purge-days/--purge-interval自动清理过期文件--max-upload-size/--rate-limit限制单文件大小与每分钟请求数--http-auth-user/--http-auth-pass给上传口加 HTTP Basic 认证--ip-whitelist/--ip-blacklistIP 黑白名单过滤实现在 server/ip_filter.go--tls-cert-file/--tls-listener开启 HTTPS。完整参数表见 README.md 的 Usage 部分。六、源码结构导览这个小项目不只有命令虽然是命令行工具但仓库结构很清晰方便你快速定位功能实现路径职责main.go程序入口仅 10 余行cmd/cmd.goCLI 参数定义与校验服务启动前的组装逻辑server/handlers.goHTTP 路由与上传/下载/删除请求处理server/token.go分享链接中随机令牌的生成server/clamav.go / server/virustotal.go病毒扫描集成server/storage/local / S3 / gdrive / storj 四种存储后端extras/transfersh预置的客户端 shell 辅助函数README.md / examples.md官方用法与场景示例大全七、常见问题 FAQQ1transfer.sh 需要安装客户端吗不需要。只要终端有curl或wget即可。想要更短的transfer命令加个 shell 别名即可见第四节。Q2上传的文件会永久保存吗不会。你可以用Max-Days请求头指定保留天数自建实例还可以配置purge-days定期自动清理。Q3分享链接安全吗链接包含随机令牌且默认不可枚举但传输内容本身是明文的——敏感文件请务必走 GPG 加密上传或在自建实例上用服务端加密配合 HTTPS 更佳。Q4可以只在自己局域网里用吗可以。--provider local--listener 127.0.0.1:8080就能起一个纯内网实例配合--ip-whitelist进一步收紧访问范围。Q5和网盘、临时文件网站有什么本质区别网盘要注册、要网页操作临时文件网站无法自控。transfer.sh 是零安装客户端 可完全自建的方案天然契合脚本化工作流——比如tar czf - 日志目录 | curl --upload-file - https://transfer.sh/journal.tar.gz一条管道完成归档上传。八、写在最后transfer.sh 证明了一件事文件分享不一定需要复杂的 UI。想快速传个文件一条curl搞定想更私密GPG 加密 限次下载想完全掌控Docker 一行命令私有化部署。这就是它被称为终端里的瑞士军刀的原因——小巧、开箱即用但每一刀都有用。现在打开终端把第一个文件传出去试试吧。⚡更多实用命令组合过滤日志上传、加密备份数据库、多文件打包下载、上传后自动邮件发送链接等请翻一翻 examples.md那里有 20 多个现成场景等你复制使用。【免费下载链接】transfer.shEasy and fast file sharing from the command-line.项目地址: https://gitcode.com/gh_mirrors/tr/transfer.sh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进