ssh, sudo, а затем скачать?

У меня есть сервер A, на нем есть три пользователя. Мне нужно загрузить 70 гигабайт содержимого папки на сервер B. Сервер имеет только 90 гигов пространства, поэтому сжимается, а передача не является вариантом. По моему опыту rsync чрезвычайно медленный в 10 раз медленнее, чем другие методы.

Я всегда использовал

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

Эта команда потрясающая, потому что она открывает трубку и напрямую загружает все, что вы хотите, на максимальной скорости. Он не замедляется от крошечных файлов, таких как rsync. Я использовал это для передачи материала быстро, и он настолько быстр, что загрузка в 100 Мбит / с является узким местом.

В любом случае, но сервер A имеет пользователя, в который я вхожу, он также имеет sudo -i, и, наконец, есть также minecraft, файлы пользователя находятся на самом деле. Пользователь не является фактическим пользователем, это просто место для файлов в целях безопасности. Я не могу войти в этот пользователь.

Итак, что я должен сделать, это ssh с сервера B на сервер A, с одной командой sudo в root, предоставить пароль root, а затем выполнить мой обычный

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

Пожалуйста, помогите мне всемогущим компьютерным волшебникам.

Вы можете использовать sudo внутри вашей команды ssh. Для запроса пароля sudo вы можете передать пароль в виде обычного текста с помощью ключа -S :

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

Другой метод, который я не очень много разбираюсь, использует expect . Вы тоже можете заглянуть в это.

Вы получили сообщение об ошибке sudo: no tty present потому что ssh автоматически не выделяет устройство tty, когда вы находитесь в неинтерактивном режиме. т.е. вы указали команду для запуска в удаленной системе.

Вы можете заставить ssh выделить устройство tty с помощью опции -t .

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