![ssh 进入服务器并下载数据](https://linux22.com/image/1129405/ssh%20%E8%BF%9B%E5%85%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E4%B8%8B%E8%BD%BD%E6%95%B0%E6%8D%AE.png)
所以我一直在使用这个命令
tar zcf - * | ssh root@ip "tar xzf - -C home/minecraft/multicraft/servers/server2"
上传内容到其他服务器。但是我必须在需要下载内容的服务器的 ssh 中。所以我尝试像这样反转命令
ssh root@ip "tar xzf - -C /home/minecraft/multicraft/servers/server4" | tar zcf - *
它给出错误
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
tar: Child returned status 1
tar: Error is not recoverable: exiting now
在我输入命令后它就空转了。
有什么建议吗?谢谢。
答案1
你的命令接近:
ssh root@ip "tar xzf - -C /home/minecraft/multicraft/servers/server4" | tar zcf - *
但是你忘记切换提取和创建 - 现在第一个命令是提取(大概是从无到有),第二个命令是创建。尝试:
ssh root@ip "tar zc -C /home/minecraft/multicraft/servers/server4 ." | tar zxv
答案2
我不确定你为什么要这样做,因为这看起来太复杂了,因为有专门的工具可以做到这一点。也许可以考虑使用 rsync 或 scp?
rsync --progress -rvz root@ip:/home/minecraft/multicraft/servers/server2 .
使用 -r 表示递归,-z 表示压缩。