Mám server A, má na něm tři uživatele. Potřebuji stáhnout 70 giga obsahu složky na server B. Server má pouze 90 giga místa, takže komprimovat a poté přenést není možné. Podle mých zkušeností rsync
je extrémně pomalý 10x pomalejší než jiné metody.
Vždy jsem používal
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Tento příkaz je úžasný, protože otevírá kanál a přímo stahuje vše, co chcete, maximální rychlostí. Nezpomaluje se z malých souborů jako rsync. Použil jsem to k rychlému přenosu věcí a je to tak rychlé, že nahrávání 100 Mb/s je překážkou.
Každopádně ale server A má uživatele, ke kterému se přihlásím, má také sudo -i a nakonec je tu také minecraft, soubory uživatelů jsou ve skutečnosti pod. Uživatel není skutečný uživatel, je to pouze zástupný symbol pro soubory z bezpečnostních důvodů. Nemohu se přihlásit k tomuto uživateli.
Takže to, co musím udělat, je, ssh ze serveru B na server A, jedním příkazem sudo do root, poskytnout root heslo a pak provést můj obvyklý
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Prosím, pomozte mi, všemohoucí počítačoví mágové.
Přijatá odpověď:
Můžete použít sudo
uvnitř vašeho příkazu ssh. Pro výzvu k zadání hesla sudo můžete heslo předat jako prostý text pomocí -S
přepínač:
ssh [email protected] "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Další metodou, kterou nebudu moc rozvádět, je použití expect
. Můžete se na to také podívat.