我正在进行研究,需要通过互联网在家里和办公室之间传输文件。使用 AnyDesk 等软件可以轻松完成此操作。由于我想通过 Linux 中的 bash 文件进行文件传输,因此我正在寻找诸如“scp”之类的命令或至少一个提供便利的简单软件,我可以通过 bash 脚本来完成此操作。
据我所知,如果您没有公共 IP 地址,则无法通过 scp 命令执行此操作。任何帮助都非常感谢。
答案1
一个非常简单的工具,可以无缝处理“不知道 IP”的情况(使用临时密码进行传输身份验证)并且对传输进行 gzip 压缩门户网站。
(笔记:这是我写的!)
如何使用它
爱丽丝想要发送<folder1>
并<file.txt>
鲍勃,可位于同一 NAT 后面进行直接传输,也可位于互联网上的任何位置进行中继传输。如果可能,Portal 将使用直接传输。
Alice 在她的 shell 中执行以下操作来初始化文件传输:
portal send <folder1> <file.txt>
这将输出一个临时密码,Alice 通过其他安全通道将该密码传达给 Bob。
# the output of the send command, use this password to receive the files
> 1-supernova-gamma-ray
Bob 执行以下命令来接收folder1
和file.txt
:
portal receive 1-supernova-gamma-ray
文件传输现在将开始!
优点
- e2e 加密
- 快速 gzip 压缩(解)
- 简单的协议有助于传输速度
- 处理任何类型和深度的文件夹
- 如果端口开放或位于同一 NAT 后面,则可进行直接通信
缺点
- 不进行 NAT 穿越,因此如果无法建立直接通信,则传输将通过中继
- 它是一个新工具,因此尚未在不同系统中尝试过,并且可能存在奇怪的错误
答案2
有很多种方法可以实现这一点。
我会使用 rsync 来做到这一点。
rsync -a localhost:source targethost:destination
以下是对 rsync 的一些描述。 https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/