Entfernte Dateien über eine wirklich seeeehr langsame Verbindung herunterladen
Ich hatte neulich das Vergnügen relative große Dateien, so zwischen 2 und 10 Megabyte, über eine wirklich seeeehr langsame Verbindung von einem Windows-Rechner auf einen anderen herunterzuladen. Der Server, auf dem sich die Daten befanden, war weit weg, ähnlich wie Deep Space 9 weit von der Erde entfernt ist. Wenn das Sternenflottenkommando versucht ein paar Dateien von der Station aus den Tiefen des Weltalls herunterzuladen und ein paar Cardassianer auf der Leitung stehen, geht es ihnen so ähnlich wie mir. Selbst Robocopy, als schweizer Taschenmesser für Kopieraufgaben, hat die Füße gestreckt und ständig angemeldet, dass die Verbindung unterbrochen ist.
Letztendlich konnte ich den Kopierjob mit dem Transferprotokoll Background Intelligent Transfer Service (BITS) unter Windows 7 erledigen. BITS kann Daten im Hintergrund übertragen, wobei ungenutzte Bandbreite konsumiert wird, um die Netz-Performance der aktiven Programme nicht zu beeinträchtigen. Sollte ein Download unterbrochen werden, kann BITS ihn ähnlich wie Robocopy wieder aufnehmen. BITS wird z.B. beim Übertragen von Dateien mit Windows Update eingesetzt. Mit bitsadmin
gibt es auch ein Kommandozeilentool, das ähnlich mächtig wie Robocopy ist, handlicher finde ich aber das Kopieren mit BITS in der Powershell.
Letztendlich haben die folgenden beiden Befefehle den Job erledigt:
Import-Module bitstransfer Start-BitsTransfer -Source \\DeepSpace9\Sources\*.* -Destination \\StarfleetCmd\Sources\ |
Zuerst wird das Powershell-Modul für die BITS-Übertragung geladen. Dann folgt der Befehl, mehrere Dateien vom Server herunterzuladen. Mit Start-BitsTransfer
wird der neue BITS-Übertragungsauftrag erstellt, wobei ich anstelle einzelner Dateien Joker-Zeichen als Platzhalter verwende. Im Zielpfad dürfen übrigens keine Joker-Zeichen verwendet werden. Mit dem oben genannten Befehl wird der Befehl übrigens nicht im Hintergrund aufgeführt, stattdessen blockiert er die Powershell, wenn er ausgeführt wird. Wer ein Beispiel für einen Job im Hintergrund sucht, findet ihn in der Hilfe von Start-BitsTransfer
:
Get-Help Start-BitsTransfer -full |
Geschrieben in Powershell, Windows