c++-Programm um Dateien auf Vollständigkeit zu prüfen

rasidrasid

Cadet 3rd Year
Registriert
Apr. 2014
Beiträge
55
Hallo,

ich würde gerne ein c++-Programm schreiben, das mir in einem Verzeichnis schaut ob die Dateien zurückkopiert (vom Server) sind. Ich dachte an sowas wie dass das Programm die evtl. die Größe der gewünschten zb. 5 Dateien im Abstand von 60sek kontrolliert und wenn sich da nichts mehr geändert hat, bekomme ich eine Meldung mit alles zurückkopiert. Es müsste irgendwie mit stat() funktionieren, doch kann ich mir jetzt keinen Reim machen. Hat irgendjemand ein code?

Danke
 
Wenn Du nicht so erfahren bist, programmiere in einer nativen .NET Sprache (z.B. C#). Dann hast du massig Tools/Bibliotheken zur Verfügung, ohne daß das Einbinden zu kompliziert wird. Für .Net gibt es von MS auch ein Sync Framework.
 
rasidrasid schrieb:
Es müsste irgendwie mit stat() funktionieren, doch kann ich mir jetzt keinen Reim machen. Hat irgendjemand ein code?

Wenn der Server länger als 60sec hängt, liefert das Programm OK für die halbkopierte Datei.

Wodurch wird der Kopiervorgang ausgelöst?
 
Hallo,

Danke für die Antworten. Also es sollte c++ sein. So so unerfahren bin ich nicht, aber brauche bei dem hier Hilfe.

Es sind Berechnugsdateien, die nach dem Lauf wieder zurück ins Startverzeichnis kopiert werden. Ich will testen ob sie vollständig wieder da sind. Wenn der Server mehr als 60s nichts mehr kopiert, dann ist auch ein Problem mit der Rechnung. Also das ist kein Problem für mich. Wie könnte ich es anpacken?

Danke
 
Du willst rsync neu erfinden? Warum, wenn es schon jemand klügeres als du oder ich längst getan hat? Wenn es eine Lernübung sein soll: Lies die Spezifikation und bau es nach.

€: Dieser Link sollte dir zum Vorteil gereichen: http://rsync.samba.org/tech_report/
 
Zuletzt bearbeitet:
Hallo Danke. Nein ich will nichts neu erfinden. Ich will nur schaun, ob eine Datei, die von einem Server wieder zurück auf meinen lokalen Rechner kopiert wird, vollständig ist um dannach eine neue Aktion auszuführen. Deshalb dachte ich, ich schaue mir die Größe an. Wenn die sich eine Weile nicht ändert, und die muss sich ändern, kann ich davon fürs erste ausgehen. Deshalb brauche ich nur einen code, der mir die Dateigröße ermittelt und mit einer Dateigröße nach einer gewissen Zeit vergleicht. Wie geht das? Das müsste doch einfacher sein.

Danke
 
rasidrasid schrieb:
Hallo Danke. Nein ich will nichts neu erfinden. Ich will nur schaun, ob eine Datei, die von einem Server wieder zurück auf meinen lokalen Rechner kopiert wird, vollständig ist um dannach eine neue Aktion auszuführen. Deshalb dachte ich, ich schaue mir die Größe an. Wenn die sich eine Weile nicht ändert, und die muss sich ändern, kann ich davon fürs erste ausgehen. Deshalb brauche ich nur einen code, der mir die Dateigröße ermittelt und mit einer Dateigröße nach einer gewissen Zeit vergleicht. Wie geht das? Das müsste doch einfacher sein.

Danke

Dieses Verfahren ist nicht zuverlässig. Rsync ist genau das, was du willst.
 
Nur mal generell: Als Programmierer muss man unbedingt gut googlen können. Dh überleg dir was genau du willst und versuch es mir den entscheidenden 3 schlagwörtern auf englisch: c++ file size
Da kommt man sehr schnell auf eine sogar portable Lösung: http://stackoverflow.com/questions/2424138/portable-way-to-get-file-size-in-c-c
Außerdem hat asdf natürlich recht, dass die Größenänderung nicht besonders zuverlässig ist und für sowas schon perfekte fertige Lösungen existieren die sehr weit/professionell entwickelt wurden.
Wenn du schon unbedingt was selbst programmieren willst: Lass doch am Ende eines Kopiervorgang vom Server eine Datei kopieren die 0 byte hat und zB den Namen trägt "serverHasFinished". Der andere Prozess guckt alle paar Sekunden ob so eine Datei existiert und weiß dann, dass alle Kopiervorgänge des Servers abgeschlossen sind. Dh wenn du diese Datei nun löscht kann dein Prozess jederzeit auf einen fertiggestellten Kopierprozess reagieren und auch erneut davon erfahren.
 
Zuletzt bearbeitet:
Zurück
Oben