Ich habe ein Shell-Skript, das weiterhin große Dateien (2 GB bis 5 GB) zwischen Remote-Systemen kopiert. Die schlüsselbasierte Authentifizierung wird bei der Agentenweiterleitung verwendet und alles funktioniert. Zum Beispiel: Angenommen, das Shell-Skript wird auf Maschine A ausgeführt und kopiert Dateien von Maschine B nach Maschine C.
"scp -Cp -i privater Schlüssel ssh_user @ Quell-IP: Quellpfad ssh_user @ Ziel-IP: Zielpfad"
Jetzt ist das Problem, dass der Prozess sshd kontinuierlich viel CPU beansprucht.
Zum Beispiel: top -c auf dem Zielcomputer (dh Computer-C) wird angezeigt
PID BENUTZER PR NI VIRT RES SHR S% CPU% MEM ZEIT + BEFEHL 14580 ssh_user 20 0 99336 3064 772 R 85,8 0,0 0: 05,39 sshd: ssh_user @ notty 14581 ssh_user 20 0 55164 1984 1460 S 6.0 0.0 0: 00.51 scp -p -d -t / home / binär / instanzen / instanz-1 / benutzer-2993 /
Dies führt zu einem hohen Lastdurchschnitt.
Ich glaube, dass scp so viel CPU benötigt, weil es Daten verschlüsselt / entschlüsselt. Aber ich brauche nicht verschlüsselte Datenübertragung als auch Maschine-B und Maschine-C ist in einem LAN.
Welche anderen Optionen habe ich? Ich dachte über 'rsync' nach. Aber die rsync-Manpage sagt:
ALLGEMEINES Rsync kopiert Dateien entweder auf oder von einem Remote-Host oder lokal auf dem aktuellen Host (das Kopieren von Dateien zwischen zwei wird nicht unterstützt Remote-Hosts).
Edit 1: Ich benutze bereits ssh cipher = arcfour128. Kleine Verbesserung, aber das löst mein Problem nicht.
Bearbeiten 2: Auf den Computern werden andere Binärdateien (meine Hauptanwendung) ausgeführt, und ein hoher Lastdurchschnitt führt zu einer schlechten Leistung.
-l limit
die Übertragungsgeschwindigkeit mit der Option begrenzen. Dies sollte auch die CPU-Auslastung verringern.
rsync
ssh ist, genau wie bei scp
.