Ho un server A, ha tre utenti su di esso. Devo scaricare i 70 GB di contenuto di una cartella nel server B. Il server ha solo 90 GB di spazio, quindi la compressione e il trasferimento non sono un'opzione. Nella mia esperienza rsync
è estremamente lento 10 volte più lento di altri metodi.
Ho sempre usato
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Questo comando è fantastico perché apre una pipe e scarica direttamente tutto ciò che vuoi, alla massima velocità. Non rallenta da piccoli file come fa rsync. L'ho usato per trasferire materiale velocemente ed è così veloce che il caricamento a 100 Mbps è il collo di bottiglia.
Ad ogni modo, ma il server A ha un utente a cui accedo, ha anche sudo -i e infine c'è anche Minecraft, i file utente sono effettivamente sotto. L'utente non è un utente reale, è solo il segnaposto per i file per motivi di sicurezza. Non riesco ad accedere a questo utente.
Quindi quello che devo fare è, ssh dal server B al server A, con un comando sudo in root, fornire la password di root e quindi eseguire il mio solito
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Per favore aiutatemi onnipotenti maghi informatici.
Risposta accettata:
Puoi usare il sudo
all'interno del tuo comando ssh. Per la richiesta della password sudo, puoi passare la password in testo normale usando il -S
interruttore:
ssh [email protected] "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Un altro metodo, che non sto elaborando molto, è usare expect
. Puoi dare un'occhiata anche a quello.