Datensicherung vom Notebook auf Netzlaufwerk

Das Problem

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.

Anwendung des Skripts

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:

  1. Den Quelltext des Skriptes in die Datei 'notebook.vbs' kopieren und die Datei speichern.

  2. Im Skript werden die Verzeichnisse in den ersten Zeilen angepaßt:

  3. 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'

Wichtig Meldungen

Das Script ‘NetzSicherung.vbs’

    ' 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
Const Quelle = "D:\"
Mit dieser Zeile wird das Quelllaufwerk (lokales Laufwerk auf dem Notebook) angegeben.

Die Zeile
Const Ziel = "M:\Notebook\" bestimmt das Ziellaufwerk (Netzlaufwerk), in dem die kopien der lokalen Dateien abgelegt werden.