schollz/croc
效率与系统工具用一段口令在任意两台电脑之间传输文件和文件夹,端到端加密,并支持中继回退。
项目介绍
croc 用于在两台电脑之间传输文件和文件夹,不需要自建服务器或做端口转发。发送方运行命令后得到一个短口令,接收方用同一口令连接;这段口令同时用于 PAKE 协商,双方据此生成端到端加密密钥。传输优先走点对点直连,失败时回退到中继;支持多文件、整个文件夹和断点续传。Windows、Linux、macOS 均可运行,网页客户端与 CLI 互通。项目使用 Go 编写,MIT 许可证。
快速使用
通过安装脚本安装:
curl https://getcroc.com | bash
也可以使用包管理器,例如 Homebrew 的 brew install croc、Scoop 的 scoop install croc,或在 Go 1.27.3+ 环境下从源码安装 go install github.com/schollz/croc/v11@latest。预编译包见发布页。
在发送端运行:
croc send <文件或文件夹>
终端会打印形如 code-phrase 的口令。在接收端运行:
croc <code-phrase>
Linux 和 macOS 上建议用环境变量传入口令,避免进程名泄露:
CROC_SECRET='<code-phrase>' croc
接收方确认后即可开始传输。不想安装时,可以打开网页客户端,输入同一口令接收。
常用选项
--overwrite不询问直接覆盖已有文件;--rename保留两个文件。--exclude "node_modules,.venv"按子串排除路径;--exclude-file按相对路径精确排除。croc send --text "hello"发送短文本,--qr生成二维码供手机接收。--socks5通过 SOCKS5 代理传输。croc store在无法实时传输时上传客户端加密后的密文;链接按时长或下载次数失效,发送方可撤回。croc ssh在参与者之间共享一个终端,不需要 SSH daemon 或端口配置。
使用约束
- 无法直连时数据经过公共中继,中继由社区资助、尽力而为;项目提供赞助入口以覆盖带宽成本。
- 自建中继至少需要两个 TCP 端口(默认 9009–9013),可用
croc relay或 Docker 运行。 - 包含
.ssh或.gnupg路径组件的文件夹始终被拒绝;.git元数据默认会被一并传输。 - 口令就是密钥:Linux 和 macOS 上通过
CROC_SECRET传入,而不是写在命令行里,避免通过进程名泄露。 - CLI 在每次传输后最多每 24 小时检查一次新版本,并显示更新提示,
--quiet可关闭提示。
HotRepo 点评
仓库累计 Star 已超过 4 万。日榜全语言记录显示,2026-07-21 至 07-23 分别新增 396、737、739 Star,到 2026-11-04 的 Go 日榜则回落到 18 Star,当日排名第 14。这轮增长与 2026-07-12 的新 Hacker News 讨论同步,该讨论获得 52 分、27 条评论;2020 年和 2023 年的旧讨论更大,分别为 150 分和 300 分。讨论主要围绕它与 Magic Wormhole 的关系,以及对维护者中继服务器的依赖;2023 年的一条评论转述当时公共中继每月约承载 20 TB 流量。对一个成本主要在带宽上的工具,自建中继是公共容量紧张时的实际选择。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。