Dan*_*k82 13 ssh scp routing vlan
我可以通过 2 个不同的 VPN 连接访问两台服务器。我设法让两个 VPN 在我的机器上同时运行(一些路由规则)。
我想scp <remote1>:some/file <remote2>:destination/folder
从我的笔记本电脑终端做一个。但是当我尝试这个时,scp
在remote1上调用的命令找不到remote2,因为它们不在同一个网络中。是否可以强制scp
命令作为路由器通过我的笔记本电脑?
如果我尝试使用 Nautilus(连接到服务器,两台服务器,然后复制粘贴)它可以工作,但我想从终端执行此操作。
小智 34
较新版本的 scp 有选项 -3
-3
Run Code Online (Sandbox Code Playgroud)Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts
如果您需要比 更大的灵活性scp -3
,plainssh
和 pipe 很有趣。
这相当于在本地机器上重定向流:
ssh sourceRemote 'cat /path/to/sourceFile' \
| ssh destinationRemote 'cat > /path/to/destinationFile'
Run Code Online (Sandbox Code Playgroud)
然后,您可以在任何时候添加更多流重定向,例如链接多个中间机器,或在路由传输文件时保存其本地副本。
扩展@Anko 的答案,您可以将其tar
用于多个文件:
ssh -q user@sourcehost 'cd /source/path; tar -czf - files...' | \
ssh -q user@desthost 'cd /dest/path; tar -xzf -'
Run Code Online (Sandbox Code Playgroud)
压缩完全是可选的 - 您的数据可能不是非常可压缩或大到足以保证开销。如果您的版本tar
不支持-z
开关,请分别通过管道gzip -c
和管道gzip -dc
。
PS:注意tar
那些在提取时不会去除前导斜杠的版本(即,如果提供,则写入绝对路径名)。
编辑:-e none
管道不需要,因为没有分配伪终端。
归档时间: |
|
查看次数: |
8782 次 |
最近记录: |