该项目得到了GitHub赞助商的支持。
croc是一种允许任何两台计算机简单且安全地传输文件和文件夹的工具。 AFAIK, CROC是唯一执行所有操作的CLI文件传输工具:
允许任何两台计算机传输数据(使用继电器)
提供端到端的加密(使用Pake)
启用简单的跨平台传输(Windows,Linux,Mac)
允许多个文件传输
允许恢复中断的转移
本地服务器或不需要端口
IPv6优先,具有IPv4后备
可以使用代理,例如TOR
有关croc的更多信息,请参阅我的博客文章或阅读我最近的采访。

为您的系统下载最新版本,或从命令行安装版本:
curl https://getcroc.schollz.com | bash
在MacOS上,您可以使用Homebrew安装最新版本:
brew install croc
在MacOS上,您还可以使用MacPorts安装最新版本:
sudo port selfupdate sudo port install croc
在Windows上,您可以使用勺子,巧克力或Winget安装最新版本:
scoop install croc
choco install croc
winget install schollz.croc
在UNIX上,您可以使用Nix安装最新版本:
nix-env -i croc
在Alpine Linux上,您必须首先安装依赖项:
apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash
在Arch Linux上,您可以与pacman安装最新版本:
pacman -S croc
在Fedora上,您可以使用dnf安装:
dnf install croc
在Gentoo上,您可以使用portage安装:
emerge net-misc/croc
在Termux上,您可以使用pkg安装:
pkg install croc
在FreeBSD上,您可以使用pkg安装:
pkg install croc
在Linux,MacOS和Windows上,您可以使用pixi在全球范围内安装:
pixi global install croc
或使用conda进入特定环境:
conda install --channel conda-forge croc
或者,您可以从源安装go and Build(需要1.17+):
go install github.com/schollz/croc/v10@latest
在Android上,有一个第三方F-Droid应用程序可供下载。
要发送文件,只需做:
$ croc send [file(s)-or-folder] Sending 'file-or-folder' (X MB) Code is: code-phrase
然后,要在另一台计算机上接收文件(或文件夹),您可以做
croc code-phrase
代码短语用于建立密码认证的密钥协议(PAKE),该协议为发送者和收件人生成了秘密密钥,用于端到端加密。
有许多可配置的选项(请参阅--help )。可以使用--remember设置一组选项(例如自定义继电器,端口和代码短语)。
croc在Linux和Mac OS上,发送和接收略有不同,以免通过过程名称泄漏秘密。在这些系统上,您需要将秘密作为环境变量运行croc 。例如,接收秘密*** :
CROC_SECRET=*** croc
这将仅在多用户系统的过程列表中显示croc ,而不会泄漏秘密。
对于单用户系统,可以通过运行永久启用默认行为
croc --classic
并确认。再次运行此命令以禁用经典模式。
您可以使用自己的代码短语发送(必须超过6个字符)。
croc send --code [code-phrase] [file(s)-or-folder]
默认情况下,CROC将提示是否覆盖文件。您可以使用--overwrite标志自动覆盖文件(仅收件人)。例如,接收一个文件自动覆盖:
croc --yes --overwrite <code>
您可以管道到croc :
cat [filename] | croc send
在这种情况下, croc将自动使用stdin数据,并发送和分配一个诸如“ Croc-STDIN-123456789”之类的文件名。要接收到stdout ,您总是可以使用--yes您将自动批准转移并将其输送到stdout 。
croc --yes [code-phrase] > out
印刷到控制台的所有其他文本都将延伸到stderr ,因此它不会干扰通往stdout消息。
有时您想发送URL或短文。除了管道外,您还可以轻松地与croc发送文本:
croc send --text "hello world"
这将自动告诉接收者在接收文本时使用stdout ,以显示其。
您可以通过添加--socks5的代理地址来使用代理作为与继电器的连接。例如,您可以通过TOR继电器发送:
croc --socks5 "127.0.0.1:9050" send SOMEFILE
您可以从几个不同的椭圆曲线中选择使用--curve标志,用于加密。只有收件人可以选择曲线。例如,使用P-521曲线接收文件:
croc --curve p521 <codephrase>
可用的曲线是P-256,P-348,P-521和SIEC。 P-256是默认曲线。
您可以从几种不同的哈希算法中进行选择。默认值是快速且彻底的xxhash算法。如果要优化速度,则可以使用更快的imohash算法,但是由于它采样文件(而不是读取整个文件),它可能会错误地确定在两台计算机上传输的文件是相同的 - 尽管这仅是这是仅限的如果要同步文件而不是将新文件发送到计算机,则问题。
croc send --hash imohash SOMEFILE
需要继电器来堆叠并行的传入和传出连接。默认情况下, croc使用公共继电器,但您也可以运行自己的继电器:
croc relay
默认情况下,它使用TCP端口9009-9013。确保打开这些。您可以自定义端口(例如croc relay --ports 1111,1112 ),但是您必须至少有2个端口才能接力。第一个端口是用于通信,随后的端口用于多路复用数据传输。
您可以通过输入接力来发送文件--relay如果要自定义自己的主机,则可以更改所使用的继电器。
croc --relay "myrelay.example.com:9009" send [filename]
注意,发送时,您只需要包括第一个端口(通信端口)。随后的数据传输端口将从继电器中传输回用户。
如果更容易,您还可以与Docker进行中继:
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
请确保包含继电器的密码,否则任何请求将被拒绝。
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
注意:包括--pass YOURPASSWORD时,您可以将使用密码(例如--pass FILEWITHPASSWORD传递给文件。
麻省理工学院
croc经历了许多迭代,我对所有的巨大贡献感到敬畏!如果您想以任何方式做出贡献,一定要发送问题,或者提出问题。
感谢@Warner的想法, @tscholl2提供的加密距离,@skorokithakis,以代理两个连接的代码。最后,感谢您提出拉请@maximbaz,@meyermarcel,@girbons,@techtide,@heymatthew, @lunsford94,@lummie,@jesuiscamille,@jesuiscamille,@threefjord,@threefjord,@marcossegovia @anatolyyyyyy,@goggle,@smileboywtu,@nicolashardy,@fbartels,@rkuprov, @hreese,@xenrox和ipar!