該項目得到了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!