In meiner Firma habe ich im Netzwerk ein eigenes Laufwerk (M:), auf dem ich meine Daten sichern kann.
Aber: Wenn ich mit meinem Notebook unterwegs bin, dann habe ich natürlich keinen Zugriff auf Laufwerk M, ich muss also meine Dateien lokal auf Laufwerk D speichern und kann diese dann gelegentlich auf Laufwerk M zu Sicherungszwecken kopieren.
Nun gibt es ab Windows 2000 den Mechanismus der Offline-Dateien, der mir mein Laufwerk M: in gewünschter Weise synchronisieren könnte. Leider verweigert Windows die Synchronisation von einigen speziellen Dateitypen, nämlich von Access (*.MDB;*.LDB;*.MDW;*.MDE) und anderen Datenbankdateien (*.DB*), die persönliche Ordnerdatei von Outlook (*.PST) sowie *.SLM (?) Dateien.
Microsoft beschreibt zwar Sinn und Abhilfe dieser Maßnahme in einem Artikel der Knowledgebase (nach dem Motto: "It's not a bug, it's a feature"), doch dazu braucht man einen Administrator. Einfacher geht es mit folgendem Skript: Die Dateien bleiben auf dem lokalen Laufwerk D und werden über ein Skript in der Autostart-Gruppe bei jeden Systemstart auf das Netzlaufwerk kopiert.
Leider bietet Windows nur eine Autostart-Gruppe an, um beim hochfahren Programme und Skripte auszuführen - für dieses Skript wäre eine 'AutoClose'-Gruppe wesentlich sinnvoller. Aber besser automatisch beim Start gesichert, als gar nicht gesichert!
Die Installation geht so:
Den Quelltext des Skriptes in die Datei 'notebook.vbs' kopieren und die Datei speichern.
Im Skript werden die Verzeichnisse in den ersten Zeilen angepaßt:
Const Quelle = "D:\"
Mit dieser Zeile wird das Quelllaufwerk (lokales Laufwerk auf dem Notebook)
angegeben.
Const Ziel = "M:\Notebook\"
Diese Zeile bestimmt das Ziellaufwerk (Netzlaufwerk), in dem die Kopien der
lokalen Dateien abgelegt werden.
Man kann das Skript jederzeit ausführen, indem man im Menü Programme/Autostart auf das Skript klickt
Damit das Skript läuft, sollte man es also in die Autostartgruppe kopieren, unter Windows 9x ist das das Verieichnis 'C:\WINDOWS\Startmenü\Programme\Autostart'
Beide Pfade müssen mit einem Backslash (\) enden
Beim Ersten Start des Skriptes läuft es besonders lange, da alle Dateien erstmalig gesichert werden müssen. Später werden nur noch die geänderten Dateien gesichert, so dass das Skript entsprechend schnell läuft. Um zu prüfen, ob das Skript noch läuft, kann man den Task-Manager aufrufen (Strg+Alt+Entf oder C:\Windows\Taskman.exe) und im Register Prozesse nach der Wscript.exe suchen. Diese führt das Skript aus und über das Beenden dieses Prozesses kann man das Skript auch ohne weitere Folgen abbrechen.
Das Skript überschreibt auf dem Netzlaufwerk M zwar gleichnamige Dateien, führt aber keinen Abgleich mit den Dateien auf Laufwerk D durch, das heißt, wenn auf D eine Datei gelöscht wurde, bleibt sie auf Laufwerk M liegen. Einerseits ist dies ein guter Schutz, um unvorsichtig gelöschte Dateien doch noch einmal zu retten, andererseits wächst das Netzlaufwerk immer weiter. Auch das Umbenennen von Verzeichnissen oder Dateien führt dazu, daß die Dateien auf dem Netzlaufwerk doppelt abgelegt werden. Das ist kein Bug, sondern ein Feature!
Wer trotzdem sein Netzlaufwerk mal richtig aufräumen will, kann gelegentlich alle Dateien auf dem Netzlaufwerk manuell löschen und dann wieder alle Dateien im Explorer mit der Maus vom lokalen Laufwerk D auf das Netzlaufwerk M kopieren.
Nach jedem Start des Rechners meldet sich ein kleines Pop-Up-Fenster und zeigt an, wieviele Dateien gesichert wurden. Man kann dieses Fenster mit OK wegklicken, aber nach spätestens 5 Sekunden verschwindet es automatisch.
Nach dem Ende des Skriptes wird der Speicher freigegeben, es laufen keine Hintergrundprogramme weiter
Das Skript erkennt, wenn das Notebook offline ist und zeigt einen Hinweis, der nach max. 5 Sekunden automatisch verschwindet.
' Quellpfad der zu sichernden Dateien angeben Const Quelle = "D:\" ' Ziel der Sicherung angeben Const Ziel = "M:\Notebook\" Dim FS, WSH, Anzahl Const Titel = "Automatische Datensicherung" Set FS = CreateObject("Scripting.FileSystemObject") Set WSH = CreateObject("WScript.Shell") On Error Resume Next PfadTesten Quelle PfadTesten Ziel Anzahl = 0 DateiSystemDurchsuchen Quelle WSH.PopUp Anzahl & " Datei(en) von " & Quelle & " nach " & Ziel _ & " gesichert", 5, Titel, vbOKOnly + vbCritical ' *** Ende des Skripts ' ---------------------------------------------------------- ' ' Rekursives Unterprogramm um das Dateisystem zu durchsuchen ' ---------------------------------------------------------- ' Private Sub DateiSystemDurchsuchen(Pfad) Dim Ordner, UnterOrdner, Datei If FS.FolderExists(Pfad) Then ' Then: Falls Ordner übergeben wurde Set Ordner = FS.GetFolder(Pfad) ' Papierkorb nicht bearbeiten If LCase(Ordner.Name) = "recycled" Then Exit Sub ' Funktion Bearbeiten() für Ordner aufrufen Bearbeiten Ordner, False ' Alle Dateien im Ordner bearbeiten For Each Datei In Ordner.Files ' Prozedur Bearbeiten() für Dateien aufrufen Bearbeiten Datei, True Next ' Alle Unterordner rekursiv bearbeiten For Each UnterOrdner In Ordner.SubFolders ' Einstieg In die Rekursion DateiSystemDurchsuchen UnterOrdner Next ElseIf FS.FileExists(Pfad) Then ' Else: Falls eine einzelne Datei übergeben wurde Bearbeiten FS.GetFile(Pfad), True End If End Sub ' Hier wird festgelegt, wie Dateien bearbeitet werden sollen. Private Function Bearbeiten(Datei, IstDatei) Dim ZielPfad ' Schreibschutz-Attribut einer/s Datei/Ordners löschen ZielPfad = Ziel & Mid(Datei.Path, Len(Quelle) + 1) If IstDatei Then If (Datei.Attributes And 32) Then Anzahl = Anzahl + 1 Bearbeiten = True Datei.Attributes = Datei.Attributes And Not 32 Datei.Copy ZielPfad, True End If Else If Not FS.FolderExists(ZielPfad) Then FS.CreateFolder ZielPfad End If End Function Private Sub PfadTesten(Pfad) Dim TempPfad ' Existiert das Laufwerk ? TempPfad = FS.GetDriveName(Pfad) If Not FS.DriveExists(TempPfad) Then WSH.PopUp "Laufwerk " & TempPfad & " existiert nicht", 5, Titel, vbCritical WScript.Quit ElseIf Not FS.Drives(TempPfad).IsReady Then MsgBox "Kein Medium In Laufwerk " & TempPfad & " eingelegt", vbCritical, Titel WScript.Quit End If ' Existiert der Pfad ? Falls Nein, Pfad aufbauen Pfad = Trim(Pfad) If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\" TempPfad = Pfad While Not FS.FolderExists(TempPfad) If FS.FolderExists(FS.GetParentFolderName(TempPfad)) Then FS.CreateFolder TempPfad ' Konnte Pfad erstellt werden ? If Not FS.FolderExists(TempPfad) Then MsgBox "Pfad '" & TempPfad & "' kann nicht erstellt werden", vbCritical, Titel WScript.Quit End If TempPfad = Pfad Else TempPfad = FS.GetParentFolderName(TempPfad) End If Wend End Sub
Anpassungen |
Das Script enthält am Anfang die Zeile
Die Zeile |