Wie zuverlässig wäre es, über WGet über SSH über WGET über WGet über SSH über WGet herunterzuladen?

StackOverflow https://stackoverflow.com/questions/380341

  •  22-08-2019
  •  | 
  •  

Frage

Ich habe eine BASH -Datei, die WGet -Befehle enthält, um über 100.000 Dateien mit einer Gesamtdatei von etwa 20 GB herunterzuladen.

Die Bash -Datei sieht ungefähr aus:

wget http://something.com/path/to/file.data

wget http://something.com/path/to/file2.data

wget http://something.com/path/to/file3.data

wget http://something.com/path/to/file4.data

Und es gibt genau 114.770 Reihen davon. Wie zuverlässig wäre es, SSH in einen Server zu sein, auf dem ich ein Konto habe, und es ausführen? Würde meine SSH -Sitzung irgendwann eine Auszeit? Müsste ich in der ganzen Zeit SSH sein? Was ist, wenn mein lokaler Computer abgestürzt war/heruntergefahren wurde?

Weiß jemand auch, wie viele Ressourcen dies benötigen? Bin ich verrückt, dies auf einem gemeinsamen Server zu tun?

Ich weiß, dass dies eine seltsame Frage ist, nur zu fragen, ob jemand irgendwelche Ideen hat. Vielen Dank!

War es hilfreich?

Lösung

Verwenden

#nohup ./scriptname &> logname.log

Dies wird sicherstellen

  • Der Prozess wird auch dann fortgesetzt, wenn die SSH -Sitzung unterbrochen wird
  • Sie können es überwachen, wie es in Aktion ist

Wird auch empfehlen, dass Sie in regelmäßigen Abständen eine schnelle Eingabeaufforderung haben können, ist gut für die Protokollanalyse. z.B #echo "1000 files copied"


In Bezug auf die Ressourcennutzung hängt sie vollständig vom System und hauptsächlich von Netzwerkmerkmalen ab. Theoretisch können Sie die Zeit mit nur Datengröße und Bandbreite aufrufen. Aber im wirklichen Leben kommen Verzögerungen, Latenzen und Datenverluste ins Bild.

Machen Sie also ein paar Assupitionen, machen Sie Mathematik und Sie werden die Antwort erhalten :)

Andere Tipps

Hängt von der Zuverlässigkeit des Kommunikationsmediums ab, Hardware, ...!

Sie können verwenden screen Damit Sie es lief, während Sie vom Remote -Computer trennen.

Sie möchten das Skript von Ihrer Shell trennen und im Hintergrund (mit NoHup) ausgeführt werden, damit es beim Abmelden fortgesetzt wird.

Sie möchten auch eine Art Fortschrittsanzeige haben, z. B. eine Protokolldatei, die jede Datei, die heruntergeladen wurde, und auch alle Fehlermeldungen. Nohup sendet Stderr und Stdout in Dateien. Mit einer solchen Datei können Sie später zerbrochene Downloads abholen und die Läufe später abgebrochen haben.

Geben Sie es zuerst mit einem kleinen Satz von Dateien ein, um festzustellen, ob Sie den Befehl heruntergekommen sind und wie die Ausgabe gefallen.

Ich schlage vor, Sie lösen es von Ihrer Schale mit nohup.

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit

Das Skript wird bis zur Fertigstellung ausgeführt - Sie müssen nicht überall angemeldet werden.

Überprüfen Sie nach Optionen, die Sie WGEs geben können, um den Fehler erneut zu machen.

Wenn dies möglich ist, generieren Sie MD5 -Prüfsummen für alle Dateien und überprüfen Sie, ob sie alle korrekt übertragen wurden.

Starten Sie es mit

nohup ./scriptname &

Und es sollte dir gut gehen. Ich würde auch empfehlen, dass Sie den Fortschritt protokollieren, damit Sie herausfinden können, wo er aufhört, wenn dies der Fall ist.

wget url >>logfile.log

könnte genug sein.

Um den Fortschritt live zu überwachen, könnten Sie:

tail -f logfile.log

Es kann sich lohnen, eine alternative Technologie zu betrachten, wie rsync. Ich habe es für viele Projekte verwendet und es funktioniert sehr, sehr gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top