ssh,sudo,然后下载?

ssh,sudo,然后下载?

我有一台服务器 A,上面有三个用户。我需要将文件夹的 70 GB 内容下载到服务器 B 中。该服务器只有 90 GB 空间,因此无法压缩然后传输。根据我的经验,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

请万能的电脑高手帮帮我。

答案1

您收到错误消息是sudo: no tty present因为ssh当您处于非交互模式时不会自动分配 tty 设备。即您已指定要在远程系统上运行的命令。

您可以使用该选项强制 ssh 分配 tty 设备-t

ssh -t user@ip "sudo tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx

答案2

您可以使用sudossh 命令内部。对于 sudo 密码提示,您可以使用开关以纯文本形式传递密码-S

ssh user@ip "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx

另一种方法是使用expect.你也可以研究一下。

相关内容