使用 Croc 命令在 Linux 系統(tǒng)電腦之間傳輸文件和文件夾
在兩臺(tái)或多臺(tái)計(jì)算機(jī)之間傳輸文件的方法有很多。你可以使用基于服務(wù)器的文件共享工具,點(diǎn)對(duì)點(diǎn)文件共享app,U盤,外部硬盤驅(qū)動(dòng)器,SCP,NFS,F(xiàn)TP,HTTP,云存儲(chǔ)平臺(tái)等等。
本文將介紹一個(gè)名為 croc 的命令行工具,可以讓你輕松、快速、安全地在計(jì)算機(jī)之間傳輸文件和文件夾。
使用 croc 工具傳輸數(shù)據(jù)的速度很快,因?yàn)樗洚?dāng)系統(tǒng)之間的中繼服務(wù)器。它在兩臺(tái)計(jì)算機(jī)之間創(chuàng)建了全雙工實(shí)時(shí)通信層,因此「上傳」和「下載」任務(wù)在兩臺(tái)計(jì)算機(jī)之間同時(shí)發(fā)生。
croc 使用密碼驗(yàn)證密鑰交換(PAKE)庫(kù)提供端到端加密。PAKE庫(kù)允許兩個(gè)人使用雙方都知道的弱密鑰來(lái)生成強(qiáng)密鑰。然后將此密鑰用于進(jìn)一步加密。由于密鑰僅由發(fā)送者和接收者知道,因此即使第三者知道原始密碼,也沒(méi)有辦法知道秘鑰。
croc 能夠一次在計(jì)算機(jī)之間傳輸多個(gè)文件。如果數(shù)據(jù)傳輸由于任何原因而中斷,下次傳輸?shù)臅r(shí)候它可以從上次中斷的地方繼續(xù)進(jìn)行文件傳輸。
由于 croc 使用中繼,因此你不需要中央服務(wù)器或端口轉(zhuǎn)發(fā)。它是一個(gè)跨平臺(tái)的應(yīng)用程序,因此你可以在 Linux,Mac 和 Windows 平臺(tái)之間傳輸數(shù)據(jù)。
簡(jiǎn)而言之, croc 執(zhí)行以下操作:
- 使用中繼在兩臺(tái)計(jì)算機(jī)之間傳輸數(shù)據(jù),
- 使用 PAKE 庫(kù)提供 端到端加密,
- 一次傳輸多個(gè)文件 ,
- 斷點(diǎn)續(xù)傳,
- 不需要中央服務(wù)器端口轉(zhuǎn)發(fā),
- ipv6-first 和 ipv4 后備,
- 零依賴性,
- 跨平臺(tái)
- 免費(fèi)和開(kāi)源。
croc 使用 Go 編程語(yǔ)言所編寫,并遵從 MIT 許可免費(fèi)提供。
在Linux上安裝Croc工具
可以在 Bash 上使用以下命令將 croc 安裝在所支持的任何 Linux 和 Unix 發(fā)行版上:
- $ curl https://getcroc.schollz.com | bash
這個(gè)命令將把 croc 源碼下載到本地并安裝在 /usr/local/bin/ 目錄下。
如果你不想直接注入Shell,可以從**發(fā)行版頁(yè)面**下載預(yù)編譯的二進(jìn)制文件,并使用發(fā)行版的軟件包管理器進(jìn)行安裝。
例如,在Ubuntu系統(tǒng)上可以使用以下命令安裝 Croc deb 文件:
- $ sudo apt install gdebi
- $ sudo gdebi croc_8.3.2_Linux-64bit.deb
你可以使用 pacman 將 croc 安裝在 Arch Linux 及其衍生版本中:
- $ pacman -S croc
在 NixOS 上,執(zhí)行以下命令進(jìn)行安裝:
- $ nix-env -i croc
croc 也可用 snap 方式進(jìn)行安裝:
- $ snap install croc
如果您已在 Linux 系統(tǒng)上安裝了 Go 環(huán)境,也可以從源代碼編譯 croc 。
- $ GO111MODULE=on go get -v github.com/schollz/croc/v8
使用Croc在計(jì)算機(jī)之間傳輸文件和文件夾
在使用之前,先確保在所有系統(tǒng)上都安裝了 croc 。
要使用 croc 傳輸文件/文件夾,只需運(yùn)行:
- $ croc send <文件或文件夾路徑>
例:
- $ croc send file.txt
croc 將生成如下的隨機(jī)代碼短語(yǔ),相當(dāng)于暗號(hào)。
- Sending 'file.txt' (116 B)
- Code is: slow-tomato-almond
- On the other computer run
- croc slow-tomato-almond
在這里,代碼短語(yǔ)(暗號(hào))是 slow-tomato-almond。該代碼短語(yǔ)用于建立經(jīng)過(guò)密碼驗(yàn)證的密鑰協(xié)議(PAKE),該協(xié)議會(huì)生成供發(fā)送方和接收方用于端到端加密的秘鑰。
如果想要在另一臺(tái)計(jì)算機(jī)上接收上述文件,那么收件人應(yīng)輸入上述輸出的最后一行命令:
- $ croc slow-tomato-almond
按 y,然后按回車鍵來(lái)接收文件。
- Accept 'file.txt' (116 B)? (y/n) y
- Receiving (<-192.168.225.37:9009)
- file.txt 100% |████████████████████| (116/116 B, 32.966 kB/s) [0s:0s]
輸出示例:
pic
設(shè)置自定義代碼短語(yǔ)
每次發(fā)送文件或文件夾時(shí), croc 都會(huì)生成一個(gè)隨機(jī)代碼短語(yǔ),但因?yàn)槊看味疾灰粯樱褂闷饋?lái)還是不太方便。所以我們可以自定義一個(gè)代碼短語(yǔ),提高效率??梢允褂? --code 參數(shù)來(lái)設(shè)置自定義代碼短語(yǔ)來(lái)發(fā)送文件/文件夾。
- $ croc send --code download-this file.txt
這里的download-this 就是我們自定義的代碼短語(yǔ)。
輸出示例:
- Sending 'file.txt' (116 B)
- Code is: download-this
- On the other computer run
- croc download-this
收件人可以使用以下命令接收文件(使用自定義的代碼短語(yǔ)):
- $ croc download-this
發(fā)送文本
就像文件和文件夾一樣,我們也可以共享文本。當(dāng)你要共享消息或者 URL 時(shí)可以用這種方式。
如果要使用 croc 發(fā)送文本,可以運(yùn)行以下命令:
- $ croc send --text "Hello!!"
輸出示例:
- Sending 'text'
- Code is: natural-roof-clock
- On the other computer run
- croc natural-roof-clock
- Sending (->[fe80::a00:27ff:fe10:7cc1%wlp9s0]:39916)
收件方需要使用以下命令獲取文本:
- $ croc natural-roof-clock
- Accept 'text' ? (y/n) y
- Receiving (<-[fe80::d710:cf4:bb49:8b20%enp0s8]:9009)
- Hello!!
使用管道
你可以將文件的輸出通過(guò)管道傳輸?shù)?croc 作為它的輸入,如下所示。
- $ cat file.txt | croc send
輸出示例:
- Sending 'stdin' (116 B)
- Code is: dexter-cowboy-soprano
- On the other computer run
- croc dexter-cowboy-soprano
croc 將自動(dòng)使用 stdin 數(shù)據(jù)并發(fā)送文件,分配文件名,例如“ croc-stdin-728899651”。
在接收端,用戶可以使用以下命令接收文件:
- $ croc dexter-cowboy-soprano
或者,使用:
- $ croc --yes dexter-cowboy-soprano > out
在這里,--yes 選項(xiàng)不會(huì)要求任何確認(rèn),并自動(dòng)同意所有提示。
設(shè)置輸出文件夾
默認(rèn)情況下, croc 會(huì)將數(shù)據(jù)下載到當(dāng)前工作目錄中。您可以使用 --out 選項(xiàng)使其使用不同的下載位置。
- $ croc send file.txt
輸出示例:
- Sending 'file.txt' (116 B)
- Code is: program-public-mystery
- On the other computer run
- croc program-public-mystery
在接收端,運(yùn)行:
- $ croc --out ~/Downloads
出現(xiàn)提示時(shí)輸入代碼短語(yǔ)。
獲得幫助
要獲取幫助,請(qǐng)運(yùn)行以下命令:
- $ croc --help
- NAME:
- croc - easily and securely transfer stuff from one computer to another
- USAGE:
- Send a file:
- croc send file.txt
- Send a file with a custom code:
- croc send --code secret-passphrase file.txt
- VERSION:
- v8.3.2-7d155ad
- COMMANDS:
- send send a file (see options with croc send -h)
- relay start your own relay (optional)
- help, h Shows a list of commands or help for one command
- GLOBAL OPTIONS:
- --remember save these settings to reuse next time (default: false)
- --debug toggle debug mode (default: false)
- --yes automatically agree to all prompts (default: false)
- --stdout redirect file to stdout (default: false)
- --no-compress disable compression (default: false)
- --ask make sure sender and recipient are prompted (default: false)
- --relay value address of the relay (default: "142.93.177.120:9009") [$CROC_RELAY]
- --relay6 value ipv6 address of the relay (default: "[2604:a880:800:c1::14c:1]:9009") [$CROC_RELAY6]
- --out value specify an output folder to receive the file (default: ".")
- --pass value password for the relay (default: "pass123") [$CROC_PASS]
- --help, -h show help (default: false)
- --version, -v print the version (default: false)