我有一个服务器 A,它上面有三个用户。我需要将文件夹的 70 演出内容下载到服务器 B。服务器只有 90 演出空间,因此不能进行压缩,然后进行传输。根据我的经验,rsync速度非常慢,比其他方法慢 10 倍。
我一直用
ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
这个命令很神奇,因为它打开了一个管道,并以最快的速度直接下载你想要的一切。它不会像 rsync 那样因小文件而变慢。我用它来快速传输东西,而且速度太快以至于 100 mbps 上传是瓶颈。
反正服务器A有一个我登录的用户,它也有sudo -i,最后还有minecraft,用户文件实际上在下面。用户不是实际用户,它只是出于安全目的的文件占位符。我无法登录该用户。
所以我必须做的是,从服务器 B ssh 到服务器 A,用一个命令 sudo 进入 root,提供 root 密码,然后执行我通常的操作
ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
请各位电脑高手帮帮我。
您收到错误消息sudo: no tty present是因为ssh当您处于非交互模式时不会自动分配 tty 设备。即,您已指定要在远程系统上运行的命令。
您可以使用该-t选项强制 ssh 分配 tty 设备。
ssh -t user@ip "sudo tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Run Code Online (Sandbox Code Playgroud)
您可以使用sudossh 命令内部。对于 sudo 密码提示,您可以使用开关以纯文本形式传递密码-S:
ssh user@ip "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用expect. 你也可以研究一下。