J'ai un serveur A, il y a trois utilisateurs dessus. J'ai besoin de télécharger les 70 Go de contenu d'un dossier sur le serveur B. Le serveur ne dispose que de 90 Go d'espace, donc la compression, puis le transfert ne sont pas une option. D'après mon expérience rsync
est extrêmement lent 10 fois plus lent que les autres méthodes.
J'ai toujours utilisé
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Cette commande est incroyable car elle ouvre un tuyau et télécharge directement tout ce que vous voulez, à une vitesse maximale. Il ne ralentit pas à partir de petits fichiers comme le fait rsync. Je l'ai utilisé pour transférer des choses rapidement et c'est tellement rapide que le téléchargement à 100 Mbps est le goulot d'étranglement.
Quoi qu'il en soit, mais le serveur A a un utilisateur auquel je me connecte, il a aussi sudo -i, et enfin il y a aussi minecraft, les fichiers utilisateur sont en fait sous. L'utilisateur n'est pas un utilisateur réel, c'est juste l'espace réservé pour les fichiers à des fins de sécurité. Je ne peux pas me connecter à cet utilisateur.
Donc, ce que je dois faire, c'est ssh du serveur B au serveur A, avec une commande sudo dans root, fournir le mot de passe root, puis effectuer mon habituel
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
S'il vous plaît, aidez-moi, les assistants informatiques tout-puissants.
Réponse acceptée :
Vous pouvez utiliser le sudo
dans votre commande ssh. Pour l'invite de mot de passe sudo, vous pouvez transmettre le mot de passe en texte brut en utilisant le -S
commutateur :
ssh [email protected] "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Une autre méthode, que je n'élabore pas beaucoup, consiste à utiliser expect
. Vous pouvez aussi vous renseigner.