(unter der Annahme von Linux) Wenn Sie der Meinung sind, dass nur ein Block der Daten beschädigt ist, die Größe des Blocks sich jedoch nicht geändert hat, können Sie dies verwenden cmp -l
. Es vergleicht Byte für Byte und -l
gibt den Offset eventueller Differenzen an. Wenn Sie nicht genau wissen, wo Sie in den Dateien anfangen sollen, können Sie einen ersten Start mit machen -i
. Wenn Sie die Offsets fehlerhaft haben, können dd skip=...
Sie diese aus der Originaldatei herausschneiden und dd seek=... conv=notrunc
in die beschädigte Datei einfügen. (Test zuerst auf Kopie)
Patchen Sie eine sehr große Binärdatei über eine langsame Verbindung
Zu Sicherungszwecken habe ich eine sehr große Binärdatei über eine vergleichbar langsame langsame Verbindung übertragen (die Übertragung dauerte 2 Wochen), indem ich sie auf einem gemounteten cifs-Anteil (so konnte und kann ich blockweise darauf zugreifen). Nach den 2 Wochen zeigte rsync einen Fehler (konnte ihn leider nicht speichern), aber die Dateigröße stimmte überein
tail -c 1000000000 myfile.img|md5sum # and head -c 1000000000 myfile.img|md5sum
übereinstimmen, so dass der Anfang und das Ende der Datei identisch sind.
Da mein Downstream viel schneller ist, habe ich das vollständige Bild erneut heruntergeladen und md5-Summen für das Ganze übernommen, und diese passen NICHT zusammen. Anscheinend ist irgendwo in diesen 1,5 TB mindestens ein Bit, das sich unterscheidet.
Gibt es eine Möglichkeit, aus den beiden heruntergeladenen Dateien einen "Patch" zu generieren und ihn dann auf die Remote-Datei anzuwenden, so dass nur die falschen Blöcke erneut übertragen werden müssen?
Bitte beachten Sie noch einmal: Ich habe NICHT die Möglichkeit, Code remote auszuführen oder die Funktionen von rsync zu nutzen, für die rsync remote ausgeführt werden muss. Ich denke, ich könnte immer noch rsync verwenden und es funktioniert in der Größenordnung meiner Download-Rate, aber ich frage mich, ob es einen besseren Weg gibt, die Tatsache zu nutzen, dass ich beide Versionen lokal habe. Es wäre wahrscheinlich nicht so schwer, etwas aufzuschreiben, aber ich würde es vorziehen, etwas getestetes zu verwenden und die Arbeit zu speichern.
2 Antworten auf die Frage
Ich würde BitTorrent verwenden, um die Datei auf der entfernten Seite wiederherzustellen. Das Protokoll teilt eine Datei in kleine Blöcke auf und lädt Blöcke, deren Hashwerte nicht mit der Seed-Datei übereinstimmen, automatisch erneut herunter.
Um es in einer privaten Umgebung zum Laufen zu bringen:
- Deaktivieren Sie DHT auf den lokalen und fernen Bit-Torrent-Clients.
- Öffnen Sie lokale Bit-Torrent-Ports in der Firewall oder richten Sie die SSH-Portweiterleitung ein.
- Erstellen Sie eine Seed-Datei auf der Quellenseite. Verwenden Sie keinen Tracker. Stellen Sie sicher, dass der Client die Datei auch startet.
- Sichern Sie die Datei auf der Remote-Seite.
- Kopieren Sie die Seed-Datei auf die Remote-Seite und öffnen Sie sie mit dem Client.
- Richten Sie den Download - Pfad auf die beschädigte Datei und wählen Sie die Option, um nicht den Download zu starten !! Deaktivieren Sie auch die Optionen für die Verbindung mit DHT, Peer Exchange usw., falls verfügbar.
- Bitten Sie den Client, die heruntergeladene Datei erneut zu überprüfen. Es sollte ein Download-Prozentsatz gemeldet werden, der fast vollständig ist.
- Fügen Sie den lokalen Client als Peer zum Download hinzu
- Starten Sie den Download
Verwandte Probleme
-
2
Welche Dateien sollten kopiert werden, um ein startfähiges Sicherungslaufwerk für OS X zu erstellen?
-
5
Was ist der Sinn des ASCII-Modus bei FTP?
-
14
Wie kann ich Dateien am schnellsten zwischen zwei Computern übertragen?
-
13
Wie lange würde es dauern, 1 TB über USB 2.0 zu übertragen?
-
9
Gibt es ein Warteschlangenkopierprogramm für Windows 7?
-
5
Was kann die Datenübertragungsrate zum NAS begrenzen?
-
14
beste Möglichkeit, Dateien auf einen DOS-Rechner zu verschieben?
-
5
Wie wird eine Datei automatisch auf einen anderen PC im Netzwerk verschoben?
-
2
Warum kann ich nicht alle Dateien in das Stammverzeichnis einer SD-Karte kopieren?
-
10
Kopieren Sie den gesamten Inhalt eines Computers auf einen anderen