Ich habe einen Server A, er hat drei Benutzer darauf. Ich muss die 70 GB Inhalt eines Ordners auf Server B herunterladen. Der Server hat nur 90 GB Speicherplatz, also ist Komprimieren und anschließendes Übertragen keine Option. Meiner Erfahrung nach rsync
ist extrem langsam 10x langsamer als andere Methoden.
Ich habe immer verwendet
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Dieser Befehl ist erstaunlich, weil er eine Pipe öffnet und alles, was Sie wollen, mit maximaler Geschwindigkeit direkt herunterlädt. Es wird nicht durch winzige Dateien verlangsamt, wie dies bei rsync der Fall ist. Ich habe dies verwendet, um Dinge schnell zu übertragen, und es ist so schnell, dass der Upload mit 100 Mbit / s der Engpass ist.
Wie auch immer, aber Server A hat einen Benutzer, bei dem ich mich anmelde, er hat auch sudo -i, und schließlich gibt es auch Minecraft, unter dem sich die Benutzerdateien befinden. Der Benutzer ist kein tatsächlicher Benutzer, sondern nur der Platzhalter für die Dateien aus Sicherheitsgründen. Ich kann mich bei diesem Benutzer nicht anmelden.
Was ich also tun muss, ist, ssh von Server B zu Server A, mit einem Befehl sudo in root, geben Sie das Root-Passwort ein und führen Sie dann mein übliches
aus
ssh [email protected] "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Bitte helfen Sie mir, allmächtige Computer-Assistenten.
Akzeptierte Antwort:
Sie können das sudo
verwenden in Ihrem ssh-Befehl. Für die sudo-Passwortabfrage können Sie das Passwort im Klartext mit -S
übergeben Schalter:
ssh [email protected] "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
Eine andere Methode, auf die ich nicht viel näher eingehe, ist die Verwendung von expect
. Sie können sich das auch ansehen.