|
|
|
|
|
PS Backup
|
Auch hier habe ich spezielle Anforderungen:
Während ich an meinen Sourcen arbeite, möchte ich regelmäßig
Zwischenstände sichern. Mehr als einmal habe ich viel Arbeit dadurch sparen
können, dass ich nach einer Änderung einfach das Backup von vor einer Stunde
eingespielt habe, weil "gar nichts mehr ging".
|
|

|
|
Mein Backup-Programm macht daher
- stündliche Backups innerhalb eines wählbaren Zeitraums (z.B. zwischen 8:00 und 18:00)
- tägliche Backups zu einem wählbaren Zeitpunkt
- wöchentliche Backups zu einem wählbaren Zeitpunkt
|
|
Backup-Aufgaben werden als "Jobs" definiert, die mehrere Quellverzeichnisse und ein
Zielverzeichnis enthalten können und durch den Backup-Modus und den Ausführungszeitpunkt
beschrieben sind.
Der Backup-Modus kann gewählt werden als
- manuell (Start durch Anklicken der Schaltfläche "Backup")
- stündlich (automatischer Start innerhalb der Grenzen "von - bis")
- täglich (automatischer Start um hh:mm:ss Uhr)
- wöchentlich (automatischer Start am dd.mm.jjjj um hh:mm:ss Uhr)
Beim Start des Jobs wird eine Liste aller Dateien der Quellverzeichnisse erstellt und mit der Dateiliste aus
dem Zielverzeichnis verglichen. Alles, was neu ist, wird kopiert, alles, was jünger ist, wird ersetzt.
Im Zielverzeichnis befindet sich so stets eine aktuelle und vollständige Kopie der Quelle(n).
|
|
|
|
Das Programm ist seit über fünf Jahren bei mir im Einsatz und sehr stabil, es ist nur wenig neue Funktionalität hinzugekommen.
In Version 4 wurde die interne Kopiermaschine gründlich überarbeitet und besser strukturiert.
Wen das interessiert: hier gibt es die Sourcen (Delphi 7).
Aktuell ist mittlerweile die Version 4.7.
|
|
|
|
Beschreibung |
|
Das Programm "PS_Backup" dient der Datensicherung und wurde in erster Linie auf die Bedürfnisse eines Programmierers zugeschnitten.
|
|
Deshalb kopiert es Dateien nicht nur auf Knopfdruck, sondern auch in
zyklischen Intervallen zu wählbaren Zeiten. Da ich PS_Backup zur
Sicherung meiner Projekte verwende, habe ich so immer den Stand von vor
einer (zwei, drei...) Stunde(n), von gestern (vorgestern...) und von
letzter (vorletzter...) Woche zur Verfügung. Wenn meine letzte Änderung
also wider Erwarten doch eine Verschlimmbesserung geworden ist, kann
ich immer mit einem früheren Stand vergleichen bzw. dorthin
zurückkehren.
Als Ausführungsintervall ist stündlich, täglich oder wöchentlich wählbar, wobei
(der Tag und) die Stunde der ersten Ausführung eingestellt werden kann.
Was kopiert werden soll, wird in Form einer Liste von
Quellverzeichnissen angegeben, wohin kopiert werden soll, als
Zielverzeichnis. Alle Quellverzeichnisse, die ein Häkchen haben, werden
kopiert. Durch Wegnehmen des Häkchens können also auch nur Teile des
Copy-Jobs ausgeführt werden.
Im Zielverzeichnis wird dieselbe Ordnerstruktur erzeugt wie im
Quellverzeichnis, d.h. "D:\Projekte" wird nach "F:\Backup\Projekte"
kopiert, wenn als Quellverzeichnis "D:\Projekte" und als
Zielverzeichnis "F:\Backup" eingestellt wird.
Die Option "nur Quellverzeichnisinhalt" bewirkt, dass nur der Inhalt
des Ordners "D:\Projekte" nach "F:\Backup" kopiert wird, und kein
Unterverzeichnis "F:\Backup\Projekte" erstellt wird.
Die Option "Im Zielverzeichnis löschen"
bestimmt, ob eine 1:1-Kopie erstellt werden soll, oder ob die Dateien im
Zielverzeichnis akkumuliert werden sollen.
Es kann eine Ausschlussliste definiert werden, die in das Eingabefeld
"diese ausschliessen:" eingetragen wird. Hier werden die üblichen
Dateimuster verwendet (z.B. *.bak oder Kopie*.doc), die durch Semikolon
voneinander getrennt werden. Das Dateimuster MUSS einen Stern enthalten.
Alternativ kann im Eingabefeld "nur diese kopieren:" festgelegt werden,
dass nur Dateien berücksichtigt werden, die den angegebenen
Dateimustern entsprechen (z.B. *.pas). Diese Angabe hat Vorrang vor der
Ausschlussliste, d.h. wenn beide angegeben sind, wird nur die
Nur-Diese-Liste ausgewertet.
Um ganze Verzeichnisse vom Kopieren auszunehmen, kann ein Suchmuster in
das Feld "Ordner überspringen" eingetragen werden, z.B. "\_", um alle
Verzeichnisse zu überspringen, die mit einem Unterstrich beginnen.
Diese Einstellungen definieren zusammen einen "Copy-Job".
Um einen Copy-Job anzulegen, wird die Schaltfläche "Neu" angeklickt,
und ein Assistent fragt alle erforderlichen Einstellungen ab, die den
Copy-Job definieren. Als Erstes wird dabei ein Name angegeben, der den
Copy-Job beschreibt und der als Eintrag in die Jobliste benutzt wird.
Von solchen Copy-Jobs können beliebig viele definiert werden, die unterschiedliche Aufgaben erfüllen.
So habe ich z.B. einen Copy-Job, der die Projekte auf den USB-Stick
kopiert, und einen Zweiten, der vom USB-Stick auf die Festplatte
kopiert.
Alle Programmeinstellungen und Copy-Job-Definitionen werden in der
Registry abgespeichert und stehen beim nächsten Aufruf wieder zur
Verfügung. Alternativ kann zur Speicherung auch die Datei
"PS_Backup.ini" dienen, die automatisch verwendet wird, wenn sie im
Programmverzeichnis vorhanden ist.
Ich benutze diese letztere Variante auf externen Laufwerken, die außer
den Daten auch das Programm PS_Backup und die passende
Konfigurationsdatei im Wurzelverzeichnis enthalten. So brauche ich
jeweils nur einen Doppelklick, um meine Projekte auf den Stick, meine
Fotos auf Platte 1 und meine Dokumente auf Platte 2 zu sichern, sobald
das Laufwerk angeschlossen ist.
Um eine solche INI-Datei erstmalig zu erzeugen, kann die
Export-Funktion von PS_Backup benutzt werden. Sie erzeugt eine Datei
"PS_Backup.export.ini", in die alle aktuellen Einstellungen geschrieben
werden. Diese Datei kann an anderer Stelle von PS_Backup importiert
werden, um beispielsweise Einstellungen von einem Rechner auf einen
anderen zu übertragen, oder um durch Umbenennen in "PS_Backup.ini" eine
lokale Einstellungsdatei zu erzeugen.
Expertentip:
Da die Quell- und Zieldateisysteme unterschiedliche Uhrzeiten haben
können (z.B. wenn nicht beide Rechner ihre Uhren per Internet-Zugriff
synchronisieren), kann es vorkommen, dass zuviele Dateien kopiert
werden, weil eigentlich gleichalte Dateien von Zielrechner einen
anderen Zeitstempel erhalten. Das Backup-Programm versucht, die
Zeitdifferenz zwischen den Dateisystemen zu messen und entsprechend zu
berücksichtigen. Man kann
aber auch gezielt eingreifen und den Parameter "Zeitunterschied"
setzen, allerdings nur in der INI-Datei bzw. in der Registry.
Standardwert ist zwei Sekunden, es kann aber ein größerer Wert gesetzt
werden, falls die automatische Ermittlung nicht das gewünschte Ergebnis
bringt. |
|
| |
|
| |
|
|
|