croc是一款用于在计算机之间传输文件的工具

CROC


关于

croc 是一款用于在计算机之间传输文件和文件夹的工具。它快速、安全且易于使用。它可以在任何两台计算机上运行,​​即使它们位于防火墙或 NAT 之后。。据我所知,croc 是唯一一款能够实现以下所有功能的 CLI 文件传输工具:

  • 允许任意两台计算机之间传输数据(使用中继)
  • 提供端到端加密(使用 PAKE)
  • 轻松实现跨平台传输(Windows、Linux、Mac)
  • 允许多文件传输
  • 允许恢复中断的传输
  • 无需本地服务器或端口转发
  • IPv6 优先,并支持 IPv4 回退
  • 可以使用代理,例如 Tor

有关 croc 的更多信息,请参阅我的博客文章 或阅读我最近接受的采访

示例

安装

您可以下载适用于您系统的最新版本,或者通过命令行安装:

bash 复制代码
curl https://getcroc.schollz.com | bash

在 macOS 上

使用 Homebrew

bash 复制代码
brew install croc

使用 MacPorts

bash 复制代码
sudo port selfupdate
sudo port install croc

在 Windows 上

您可以使用 ScoopChocolateyWinget 安装最新版本:

bash 复制代码
scoop install croc
bash 复制代码
choco install croc
bash 复制代码
winget install schollz.croc

使用 nix-env

您可以使用 Nix 安装最新版本:

bash 复制代码
nix-env -i croc

在 NixOS 上

您可以将以下命令添加到您的 configuration.nix

nix 复制代码
environment.systemPackages = [
pkgs.croc
];

在 Alpine Linux 上

首先,安装依赖项:

bash 复制代码
apk add bash coreutils
wget -qO- https://getcroc.schollz.com | bash

在 Arch Linux 上

使用 pacman 安装:

bash 复制代码
pacman -S croc

在 Fedora 上

使用 dnf 安装:

bash 复制代码
dnf install croc

在 Gentoo 上

使用 portage 安装:

bash 复制代码
emerge net-misc/croc

在 Termux 上

使用 pkg 安装:

bash 复制代码
pkg install croc

在 FreeBSD 上

使用 pkg 安装:

bash 复制代码
pkg install croc

在 Linux、macOS 和 Windows 上通过 Conda 安装

您可以使用 conda-forge 全局安装pixi:

bash 复制代码
pixi global install croc

或者使用 conda 安装到特定环境中:

bash 复制代码
conda install --channel conda-forge croc

在 Linux、macOS 上通过 Docker 运行

将以下单行函数添加到您的 ~/.profile 中(适用于任何符合 POSIX 标准的 shell):

bash 复制代码
croc() { [ $# -eq 0 ] && set -- ""; docker run --rm -it --user "$(id -u):$(id -g)" -v "$(pwd):/c" -v "$HOME/.config/croc:/.config/croc" -w /c -e CROC_SECRET schollz/croc "$@"; }

您也可以直接将其粘贴到当前会话的终端中。首次运行时,Docker 将拉取镜像。通过 Docker 运行 croc 仅在当前目录及其子目录中有效。

从源代码构建

如果您愿意,您可以安装 Go 并从源代码构建(需要 Go 1.22 及以上版本):

bash 复制代码
go install github.com/schollz/croc/v10@latest

在 Android 上

有一个第三方 F-Droid 应用可供下载

用法

要发送文件,只需执行以下操作:

bash 复制代码
$ croc send [file(s)-or-folder]
发送“file-or-folder”(X MB)
代码为:code-phrase

然后,要在另一台计算机上接收文件(或文件夹),请运行:

bash 复制代码
croc code-phrase

代码短语用于建立密码验证的密钥协议 (PAKE),该协议会生成一个密钥,供发送方和接收方用于端到端加密。

自定义和选项

在 Linux 或 macOS 上使用 croc

在 Linux 和 macOS 上,发送和接收过程略有不同,以避免通过进程名称泄露密钥。您需要将密钥作为环境变量运行 croc。例如,要使用密钥“***”接收:

bash 复制代码
CROC_SECRET=*** croc

对于单用户系统,可以通过运行以下命令永久启用默认行为:

bash 复制代码
croc --classic

自定义密码短语

您可以使用自己的密码短语发送(必须超过 6 个字符):

bash 复制代码
croc send --code [密码短语] [文件或文件夹]

允许覆盖而不提示

要自动覆盖文件而不提示,请使用“--overwrite”标志:

bash 复制代码
croc --yes --overwrite <code>

排除文件夹

要排除文件夹发送,请使用“--exclude”标志并以逗号分隔排除项:

bash 复制代码
croc send --exclude “node_modules,.venv” [文件夹]

使用管道 - 标准输入和标准输出

您可以通过管道连接到 croc

bash 复制代码
cat [文件名] | croc send

要将文件接收到 stdout,您可以使用:

bash 复制代码
croc --yes [code-phrase] > out

发送文本

要发送 URL 或短文本,请使用:

bash 复制代码
croc send --text "hello world"

使用代理

您可以通过添加 --socks5 来通过代理发送文件:

bash 复制代码
croc --socks5 "127.0.0.1:9050" send SOMEFILE

更改加密曲线

要选择不同的椭圆曲线进行加密,请使用 --curve 标志:

bash 复制代码
croc --curve p521 <codephrase>

更改哈希算法

为了加快哈希速度,请使用 imohash算法:

bash 复制代码
croc send --hash imohash SOMEFILE

自托管中继

您可以运行自己的中继:

bash 复制代码
croc relay

默认情况下,它使用 TCP 端口 9009-9013。您可以自定义端口(例如,croc relay --ports 1111,1112),但至少需要2个端口。

使用中继发送文件:

bash 复制代码
croc --relay "myrelay.example.com:9009" send [filename]

使用 Docker 自托管中继

您也可以使用 Docker 运行中继:

bash 复制代码
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc

使用自定义中继发送文件:

bash 复制代码
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]

致谢

croc 经历了多次迭代,非常感谢大家的贡献!特别感谢:

以及更多!

关于项目

croc 是一款用于在计算机之间传输文件和文件夹的工具。它快速、安全且易于使用。它可以在任何两台计算机上运行,​​即使它们位于防火墙或 NAT 之后。
MIT
Golang
31,275
1240
251
2017-10-17
2025-10-09

增长趋势 - stars