P

Portal - 一款现代文件传输实用程序🌌✨Portal

2025-06-10

Portal - 一款现代文件传输实用程序🌌✨

门户网站

门户网站

...是一个与平台无关的命令行文件传输实用程序,用于将文件从任何计算机发送到另一台计算机。

现在是 2023 年,ChatGPT 正在占领世界,然而,互相发送文件仍然非常烦人

您有多少次尝试通过 Messenger、WhatsApp 或 Discord 向朋友发送文件,却发现无法发送文件夹、文件或总共.zip无法发送少量文件?25MB

所以...你转到 Google Drive,但随后你必须摆弄链接权限,如果你要上传大文件,则必须等待它完全上传到 Google Drive,然后你的朋友才能开始下载它。哎呀

作为开发者,您知道发送文件并不。我们也一样,但对目前的现状感到厌倦。因此,我们创建了Portal,一个命令行实用程序,可以帮助您快速轻松地发送文件。

安装

在 GitHub 上查看安装选项(curl、brew,等等)!
喜欢的话记得点个⭐哦 <3

GitHub 徽标 SpatiumPortae /门户

Portal 是一款快速简便的命令行文件传输实用程序,可以从任何计算机传输到另一台计算机🌌✨

门户网站

命令行文件传输实用程序,用于将文件从任何计算机发送到另一台计算机

   

安装

在 macOS/Linux 上,如果您使用Homebrew

brew install portal
Enter fullscreen mode Exit fullscreen mode

在 Windows 上,如果您使用Scoop

scoop install portal
Enter fullscreen mode Exit fullscreen mode

在 Windows 上,如果您使用WinGet

winget install SpatiumPortae.portal
Enter fullscreen mode Exit fullscreen mode

在 Arch Linux(AUR)上

yay -S portal-bin
Enter fullscreen mode Exit fullscreen mode

在任何平台上,您都可以手动获取最新版本,或者简单地运行

curl -sL portal.spatiumportae.com | bash
Enter fullscreen mode Exit fullscreen mode

或者

wget -qO - portal.spatiumportae.com | bash
Enter fullscreen mode Exit fullscreen mode

工作原理

发送文件和文件夹

发送文件:

portal send <file1> <file2> <folder1> <folder2> ...
Enter fullscreen mode Exit fullscreen mode

应用程序将以 格式输出一个临时密码1-inertia-elliptical-celestial

发送方将通过某个安全通道将此密码传达给接收方。

接收文件和文件夹

要接收这些文件:

portal receive 1-intertia-elliptical-celestial
Enter fullscreen mode Exit fullscreen mode

两个客户端将通过中继服务器建立连接……

工作原理

发送文件和文件夹

发送文件:

portal send <file1> <file2> <folder1> <folder2> ...
Enter fullscreen mode Exit fullscreen mode

应用程序将以格式输出临时密码
1-inertia-elliptical-celestial

发送者将通过某个安全通道将此密码传达给接收者。

接收文件和文件夹

要接收这些文件:

portal receive 1-intertia-elliptical-celestial
Enter fullscreen mode Exit fullscreen mode

两个客户端将通过中继服务器建立连接。然后,文件传输将根据实际情况,通过直接连接或中继连接开始。

它是什么样子的✨

发送者(顶部)向接收者(底部)发送一个文件夹和三个文件。

在这种情况下,正如您在事件日志中看到的,传输是通过直接传输进行的。这意味着文件直接从一个客户端发送到另一个客户端,不涉及任何中间人

事实上,这些计算机位于同一个本地网络中,并且portal能够识别这一点。

演示

门户演示

特征

portal提供:

  • 使用PAKE2进行端到端加密
  • 如果可能的话直接传输文件(例如发送者和接收者在同一个本地网络中)
  • 如果发送者和接收者无法直接连接,则回退到中继服务器
  • 并行 gzip 压缩文件,实现更快、更高效的传输
  • 托管您自己的中继(如果您计划发送大量数据,我们将不胜感激!)
  • 可配置性和 Shell 补全
  • 等待文件时,闪亮的用户界面⭐✨ 让你眼前一亮

竣工

portalTAB为以下壳层提供广泛的完井服务:

  • bash
  • zsh
  • fish
  • powershell

要查看您的 shell 和平台的安装说明,请运行:

portal completion [bash|zsh|fish|powershell] --help
Enter fullscreen mode Exit fullscreen mode

提示!

您可能没有完全听清鲍勃在房间那头喊出的密码。

您可以使用TAB补全功能在接收端自动完成密码。

TAB输入部分密码时按下...

portal receive 42-relative-parsec-s...
Enter fullscreen mode Exit fullscreen mode

...并portal会建议可能的词语

$ portal receive 42-relative-parsec-s...

42-relative-parsec-supernova  42-relative-parsec-scatter    42-relative-parsec-solar      42-relative-parsec-spin       42-relative-parsec-static     
42-relative-parsec-sigma      42-relative-parsec-solid      42-relative-parsec-star       42-relative-parsec-storm      42-relative-parsec-system
Enter fullscreen mode Exit fullscreen mode

超新星

portal receive 42-relative-parsec-supernova
Enter fullscreen mode Exit fullscreen mode

旗帜

Receiver

  • -y/--yes[Y/n]:不提示覆盖现有文件

Relay

  • -p/--port:托管中继服务器的端口

SenderReceiver

  • -r/--relay:中继服务器的地址(:8080,,myrelay.io:1234...)
  • -s/--tui-style:tui 的样式(rich| raw

SenderReceiverRelay

  • -h/--help:输出任何命令的帮助信息
  • -v/--verbose:将调试信息记录到文件

配置

portal将其配置文件放在 中$HOME/.config/portal/config.yml

从文件扩展名可以看出,该配置是一个带有描述性字段名称的简单YAML文件。

默认配置

relay: portal.spatiumportae.com
verbose: false
prompt_overwrite_files: true
relay_serve_port: 8080
tui_style: rich
Enter fullscreen mode Exit fullscreen mode

托管你自己的中继

portal二进制文件自带内置中继服务器。
启动您自己的中继服务器非常简单……

portal serve --port 1337
Enter fullscreen mode Exit fullscreen mode

服务器日志输出为。超级推荐通过jqJSON运行它

portal serve --port 1337 2>&1 | jq .
Enter fullscreen mode Exit fullscreen mode

...

{
  "level": "info",
  "ts": "2023-02-28T02:57:45.310134+01:00",
  "caller": "rendezvous/server.go:77",
  "msg": "serving rendezvous server",
  "version": "v1.2.1",
  "address": ":1337"
}
Enter fullscreen mode Exit fullscreen mode

维护者

致谢

nhooyr/websocketshollz/pakecharmbracelet/bubblescharmbracelet/bubbleteacharmbracelet/lipglossmuesli/reflowklauspost/pgzip等等。

DigitalOcean <3

特别感谢我们的赞助商DigitalOcean

可供所有人使用的公共中继由 DigitalOcean 赞助。

鏂囩珷鏉ユ簮锛�https://dev.to/zinokader/portal-a-modern-file-transfer-utility-4154
PREV
React 备忘单
NEXT
The complete guide to setup a CI/CD for Rails 6+ on Gitlab Continuous Integration/Deployment for Rails on Gitlab What will we achieve ? The GITLAB-CI Let's do it Conclusion