Ich habe mal etwas in meinen Projekten gekramt und ein Programm, welches ich mal für unterschiedliche Bekannte geschrieben habe, herausgepickt. Ursache war erneut eine Anfrage eines weiteren Bekannten, ob es nicht möglich ist, Dateien und Verzeichnisse in “Echtzeit” auf ein Ziel der Wahl zu synchronisieren, damit im Ernstfall eine Wiederherstellung dieser Dateien möglich ist. Ich bitte hier an dieser Stelle das Wort “Ernstfall” nicht zu ernst zu nehmen, denn 100%ige Sicherheit gibt es nicht – auch nicht bei meinen Anwendungen
Es passiert viel zu oft, dass Dateien zB. von Netzlaufwerken irrtümlich gelöscht werden. Da Windows keinerlei Netzlaufwerk-Papierkörbe kennt, ebenso wenig Mac OS X bei Zugriff auf SMB-Shares, ist dieses Programm vor 2 Jahren entstanden. Es synchronisiert die Quelle zum Ziel (zB. ein eigener “Papierkorb” oder Backup-Ordner auf dem Netzwerk) und verweilt zur Laufzeit im Hintergrund, überprüft die Zugriffe auf die jeweiligen Dateien und Ordner und synchronisiert das Ganze dementsprechend. Wird eine Datei erzeugt, wird diese auch am Ziel umgehend erzeugt. Wird eine Datei geändert, geschieht dies auch am Ziel. Beim Löschen und Umbenennen passiert ebenso das Gleiche am Ziel. (Löschen kann in dieser Version abgeschaltet werden).
Sicherlich gibt es genügend Backup-Programme – kostenfrei und käuflich – aber diese halfen nicht bei oben genanntem Problem, wenn eine Datei erzeugt, aber Minuten oder Stunden später irrtümlich, durch DAU-Verhalten oder Layer-8 Problem, gelöscht wurden. Normale Backup- oder Syncprogramme laufen entweder immer nach einer Zeit X in Minuten oder gar nur einmal täglich.
Ich habe das Programm noch einmal auf die Schnelle etwas bearbeitet (Menüs, Dialoge) und diese ebenso einem Test unter Windows XP und Windows Vista unterzogen. Voraussetzung ist .Net Framework 3.5, aber bei Bedarf kann ich auch das Ganze für 2.0 anbieten.
Technischer Hintergrund: Das Ganze basiert auf der FileSystemWatcher-Klasse des .Net Frameworks, welches Created, Changed, Renamed und Deleted-Ereignisse verarbeitet und diese Information an das Ziel weitergibt. Es ist einstellbar, ob Deleted-Ereignisse verarbeitet werden sollen, oder nicht. Ebenso sind mehrere Sync-Jobs parallel möglich, um mehrere Ordner zu überwachen und zu sichern.
Es wird dringend davon abgeraten, eine komplette Festplatte (zB. Laufwerk C:) überwachen zu lassen. Die Auslagerungsdatei, der Windows-, wie auch weitere systemrelevante Ordner, schreiben gern und viel in ihre Dateien und Ordner herum. Das würde das Programm und somit den Rechner nur unnötig ausbremsen und für eventuell daraus resultierende “Schäden” übernehme ich definitiv keine Haftung. Apropos Haftung: Die Nutzung, der hier kostenfrei zur Verfügung gestellten Anwendung, unterliegt eigener Verantwortung. Das Programm, wie angeboten, ist “as is”, beinhaltet mit Sicherheit den einen oder anderen Fehler und eine 100%ige Funktion kann nicht gewährleistet werden. Das Programm liegt ebenso in den Original-Quellen vor, damit der geneigte Nutzer oder Programmierer sich der Basis annehmen und dann seine eigene Anwendung daraus stricken kann.
Update: Bug bereinigt – in bestimmten Konstellationen wurde das Ziel nicht korrekt geschrieben. Vornehmlich, wenn die Quelle im Vergleich zum bestehenden Ziel kleiner war. Programm + Quellcode in den Links wurden aktualisiert.
Das Programm startet derzeitig immer im Fenster-Modus. Optionen, um dies zu ändern, existieren noch nicht. Ein Doppelklick auf das Symbol in der Tray (das Teil neben der Uhr) blendet das Fenster aus bzw. wieder ein. Die Anwendung kann nur über das Tray-Symbol (rechte Maustaste – Beenden) beendet werden – oder aber, indem es mit dem Task-Manager abgeschossen wird – je nachdem, wie man es gern hat. Über Menüpunkt “Job -> Anlegen” kann ein Sync-Job angelegt werden. Um einen Job zu bearbeiten, einfach rechte Maustaste auf den gewünschten Job in der Liste und dann auf “Job ändern” klicken. Ebenso verhält es sich, wenn ein Job gelöscht werden soll.
Nachdem ein Job angelegt bzw. geändert wurde (oder aber mit definierten Jobs nach Start von easyLiveSync) wird pro Job jeweils abgefragt, wie weiter vorzugehen ist (Dies wird in einer späteren Version mit hinterlegbaren Job-Optionen geändert werden). Es stehen 3 Möglichkeiten zur Wahl:
- Zielordner (alles, aber auch wirklich alles darin) löschen, Quelle in Ziel kopieren und danach das Ganze live überwachen,
- Zielordner nicht löschen (wenn zB. schon einmal gesynced wurde), Quelle (neue oder geänderte Dateien und Ordner) werden auf das Ziel kopiert und danach das Ganze live überwacht, oder
- nichts kopieren, sondern die Änderungen von Quelle auf Ziel übertragen (hier kann es bei Situationen, wo noch niemals vorher das Ziel gefüllt wurde, zu Problemem kommen – sprich Error).
Mehr gibt es eigentlich nicht zu wissen.
Für Verbesserungsvorschläge, dumme, negative, wie auch positive Kommentare, bin ich offen – und mit Sicherheit gibt es etwas zu verbessern (zB. Dateifilter, Überprüfung wann eine Datei an Quelle und Ziel gleich ist usw.)