#qrcode #mobile-devices #terminal-file #terminal #mobile #tokio

bin+lib qrsync

终端内使用二维码将文件在移动设备之间复制到/从 WiFi 的实用工具

14 个版本

0.3.0 2023 年 8 月 6 日
0.2.3 2023 年 7 月 31 日
0.2.2 2022 年 5 月 12 日
0.1.8 2021 年 9 月 10 日
0.1.6 2020 年 5 月 20 日

#89 in 多媒体

每月 37 次下载

MIT 许可证

145KB
554

QrSync

Release Ci Crates.io Docs.rs Crates.io License

终端内使用 WiFi 将文件在移动设备之间复制到/从的实用工具。

当我构建 QrSync 时,它只是用来从终端向移动设备发送文件,然后我发现惊人的 qrcp,并从中获取了一些想法,并实现了从运行 QrSync 的计算机向移动设备复制文件的可能性。

安装

Github Actions 在推送新标签时为各种架构发布 二进制文件

  • x84-64 Linux GNU
  • x86-64 Darwin
  • aarch64 Linux GNU
  • armv7 Linux GNU

或者您可以直接从 crates.io 安装最新的标签

❯❯❯ cargo install qrsync

Rust 版本

QrSync 需要 Rust >= 1.60 的稳定版。

支持的平台

QrSync 已在 Linux 和 MacOSX 上进行了测试。

它目前也支持 Windows,但尚未进行测试。在 *nix 上,它使用 pnet 自动发现主接口及其 IP 地址并绑定到它。Pnet 建立在 Windows 上的依赖项相当复杂(更多信息请参见 此处),因此在此平台上,QrSync 将 --ip-address 命令行选项强制为必填,并且根本不构建 pnet

操作模式

QrSync 可以在两种模式下运行,具体取决于命令行选项

  • 发送模式:当将文件传递到命令行时选择此模式。QrSync 将在终端上生成二维码并启动发送模式的 HTTP 服务器。示例
    ❯❯❯ qrsync my_document.pdf
     INFO  qrsync::http > Send mode enabled for file /home/bigo/my_document.pdf
     INFO  qrsync::http > Scan this QR code with a QR code reader app to open the URL http://192.168.1.11:5566/Q2FyZ28udG9tbA
    
  • 接收模式: 如果命令行没有传递文件,则选择此模式。QrSync将在终端生成一个二维码,并从当前目录以接收模式启动HTTP服务器。可以使用--root-dir命令行选项指定保存接收文件的特定文件夹。示例
    ❯❯❯ qrsync
     INFO  qrsync::http > Receive mode enabled inside directory /home/bigo
     INFO  qrsync::http > Scan this QR code with a QR code reader app to open the URL http://192.168.1.11:5566/receive
    

IPv6 支持

QrSync会尝试猜测要使用哪个接口以及要绑定到所选接口的地址。如果您想使用IPv6,请确保您有一个有效的非链路本地地址,并指定--ipv6命令行参数。请记住,可以使用--ip-address命令行参数始终覆盖IP地址。

命令行选项

USAGE:
    qrsync [FLAGS] [OPTIONS] [filename]

ARGS:
    <filename>    File to be send to the mobile device

FLAGS:
    -d, --debug           Enable QrSync debug
    -h, --help            Prints help information
    -6, --ipv6            Prefer IPv6 over IPv4
    -l, --light-term      Draw QR in a terminal with light background
    -V, --version         Prints version information

OPTIONS:
    -i, --ip-address <ip-address>    IP address to bind the HTTP server to. Default to primary interface
    -p, --port <port>                Port to bind the HTTP server to [default: 5566]
    -r, --root-dir <root-dir>        Root directory to store files in receive mode

致谢

  • qrcp:我从这个令人惊叹的项目中汲取了许多灵感,并且“窃取”了基于HTML Bootstrap的大多数UI。
  • axum:一个出色的Rust HTTP框架,非常可扩展且易于使用。
  • qr2term:基于终端的二维码渲染库。
  • clap:哎呀,我在哪里开始讲述我有多么喜欢Clap呢?

许可证

请参阅LICENSE文件。

依赖项

~18–32MB
~493K SLoC