用 Go 写的文件传输工具 croc 了解一下

土拨鼠最近换了M1的电脑,由于MAC的隔空发送一直发现不了对方,就想起17年用过的一个用Go写的传输工具,一直有点印象,忘记叫什么名了,在GitHub上star列表终于才搜到croc[1]。这下赶紧顺手给他归了一下repo的类别。

下来土拨鼠简单介绍一下这个库。croc有鳄鱼的意思,so这里就用鳄鱼的图代表了库。

f4337b4f84a81b083f3ebffe1ceb79cc.png

鳄鱼

croc是一种允许任何两台计算机简单安全地传输文件和文件夹的工具。据我所知,croc是唯一可以执行以下所有操作的CLI 文件传输工具:

  • 允许任何两台计算机传输数据(使用中继服务器)

  • 提供端到端加密(使用 PAKE)

  • 实现轻松的跨平台传输(Windows、Linux、Mac)

  • 允许多个文件传输

  • 允许恢复被中断的传输

  • 不需要本地服务器或端口转发

  • ipv6-first和 ipv4 后备

  • 可以使用代理,比如tor

有关详细信息croc,请参阅博客文章[2]

安装

mac下可以直接使用brew进行安装。

brew install croc

若你使用其他平台和方式的话,也可以根据go get和go install进行安装。

使用

自定义Code传输文件

这里我试验了传输文件的例子。

# send 
croc send --code code-phrase [file(s)-or-folder]
# receive
croc code-phrase
  • send : 表示发送

  • --code:指定传输和接收的code(不小于6个字符),用于建立密码验证密钥协议 ( PAKE[3] ),也可以不带此选项会自动生成code。

croc 发送

$croc send --code 123456 zshrc
Sending 'zshrc' (3.9 kB)
Code is: 123456
On the other computer run

croc 123456

Sending (->192.168.0.103:62532)
 100% |████████████████████| (3.9/3.9 kB, 1.711 MB/s)

croc 接收

$ croc 123456
Accept 'zshrc' (3.9 kB)? (Y/n) y

Receiving (<-192.168.0.104:9009)
 100% |████████████████████| (3.9/3.9 kB, 213.064 kB/s)

其他例子

使用管道传输
cat [filename] | croc send
传输文本
croc send --text "hello world"
使用自建中继服务器

默认情况下,croc使用公共中继器。如果你可以不想使用公共的中继服务器,,你可以搭建自己的中继服务器,端口你可以自定义,但必须至少有两个端口。第一个端口用于通信,后续端口用于多路数据传输。

docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='croc_relay_1234' schollz/croc

发送文件

$croc --pass croc_relay_1234 --relay "192.168.0.103:9009" send test.md
Sending 'test.md' (13 B)
Code is: 0484-memo-capital-papa
On the other computer run

croc --relay 192.168.0.103:9009 --pass croc_relay_1234 0484-memo-capital-papa

Sending (->192.168.0.103:49170)
 100% |████████████████████| (13/13 B, 37.528 kB/s)

接收文件

$croc --relay 192.168.0.103:9009 --pass croc_relay_1234 0484-memo-capital-papa
Accept 'test.md' (13 B)? (Y/n) y

Receiving (<-127.0.0.1:65528)
 100% |████████████████████| (13/13 B, 9.311 kB/s)

小结

今天关于croc这个小工具的介绍就到这里了。另外还有一些不错的基于服务器的文件共享工具:https://send-anywhere.com[4]、https://ipfs.io/ [5]。感兴趣的同学也可以看一下。

如果你有更好的库推荐,欢迎留言讨论。

参考资料

[1]

croc: https://github.com/schollz/croc

[2]

博客文章: https://schollz.com/software/croc6

[3]

PAKE: https://en.wikipedia.org/wiki/Password-authenticated_key_agreement

[4]

https://send-anywhere.com: https://send-anywhere.com/

[5]

https://ipfs.io/ : https://ipfs.io/


欢迎关注Go招聘公众号,获取Go专题大厂内推面经简历股文等相关资料可回复和点击导航查阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值