Tengo un servidor A, tiene tres usuarios. Necesito descargar los 70 gigas de contenido de una carpeta en el servidor B. El servidor solo tiene 90 gigas de espacio, por lo que comprimir y luego transferir no es una opción. En mi experiencia rsync
es extremadamente lento 10 veces más lento que otros métodos.
Siempre he usado
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Este comando es sorprendente porque abre una tubería y descarga directamente todo lo que desea, a la máxima velocidad. No se ralentiza con archivos pequeños como lo hace rsync. He usado esto para transferir cosas rápidamente y es tan rápido que la carga de 100 mbps es el cuello de botella.
De todos modos, pero el servidor A tiene un usuario en el que inicio sesión, también tiene sudo -i, y finalmente también está Minecraft, los archivos de usuario están realmente debajo. El usuario no es un usuario real, es solo el marcador de posición de los archivos por motivos de seguridad. No puedo iniciar sesión en este usuario.
Entonces, lo que debo hacer es, ssh del servidor B al servidor A, con un comando sudo en la raíz, proporcionar la contraseña de raíz y luego realizar mi habitual
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Por favor, ayúdenme, todopoderosos magos informáticos.
Respuesta aceptada:
Puedes usar el sudo
dentro de su comando ssh. Para la solicitud de contraseña de sudo, puede pasar la contraseña en texto sin formato usando -S
cambiar:
ssh [email protected] "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Otro método, que no estoy elaborando mucho, es usar expect
. También puedes investigar eso.