- Am Ende poste ich ein "finish" an das Script und das Script setzt (wenn die Chunks durchgehend sind) die File dann wieder zusammen
Vorschlag:
Am Anfang Dateiname, Länge, Chunk-Länge und Prüfsumme der
Datei übertragen.
Der Server kann aufgrund dieser Informationen prüfen, ob für diese
Datei schon eine Teilübertragung stattgefunden hat.
Sollte sich die gemerkte Prüfsumme der
Datei unterscheiden, wurde die
Datei auf dem Client inzwischen verändert und muss komplett neu übertragen werden.
Server legt die
Datei sofort in der Gesamtlänge mit temporären Namen an (Speicher ist reserviert, vermindert Fragmentierung).
Server teilt mit welche Chunks noch benötigt werden.
Client überträgt Chunks, vieleicht sogar mehrere parallel (spart die Latenzzeit).
Server schreibt jeden Chunk direkt in die
Datei ab der Position, an die der Chunk gehört.
Streicht die übertragenen Chunk aus seiner Liste.
Client meldet Abschluss.
Server prüft ob noch Chunk fehlen > Fehler Rückmeldung > fehlende Chunk übertragen
Server prüft CRC > Fehler Rückmeldung > Abbruch
Server benennt die temporäre
Datei um und gibt die nur für die Übertragung erforderlichen Daten frei.
Es sollte auch ein Mechanismus existieren, die Übertragungen vom Client aus endgültig abzubrechen.