Backup Lösung - LastBackup anzeigen

  • Hallo,

    wie bereits in dem ein oder anderen Thread erwähnt arbeite ich an einer Backuplösung for unsere Notebooks.

    Diese werden auf dem Server im Laufwerk U:\Backup gespeichert,

    Nun hätte ich gerne, dass der User beim Rechtsklick sieht, wann das letzte Backup gemacht wurde. (1. wie kann ich die uhrzeit ausgegraut anzeigen lassen? 2. ist es auch möglich eine Verknüpfung in den BackupLog Order zu machen? Sprich der Benutzer klickt auf die Uhrzeit und kommt in den Ordner mit den Backup Logs)

    Wie mache ich das am besten? Hab an sowas gedacht wie Auslesen, wann der Order U:\Backup die letzte Veränderung hatte...

    Vielen Dank...


    [autoit]


    #include <GUIConstants.au3>
    Opt('TrayMenuMode', 3)
    Opt('TrayAutoPause', 0)
    Opt('TrayIconHide', 0)
    Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
    ;Global $TrayLog = TrayCreateItem('LOG anzeigen')
    ;Global $LastBackup = TrayCreateItem('LastBackup')
    Global $TrayExit = TrayCreateItem('Beenden')
    call("_ProgramFilesDir")
    TraySetClick(16)
    While 1

    [/autoit][autoit][/autoit][autoit]



    Switch TrayGetMsg()
    Case $TrayMan
    If Ping("nesdkbsvr01") > 0 Then
    If Not FileExists("U:\Backup") Then
    DirCreate ("U:\Backup")
    Endif
    If Not FileExists("U:\Backup\Documents") Then
    DirCreate ("U:\Backup\Documents")
    EndIf
    If Not FileExists("U:\BackupLog") Then
    DirCreate ("U:\BackupLog")
    Endif

    TrayTip ("Manuelles Backup", "Systembackup wurde gestartet!",0,1)
    Call("Backup")
    TrayTip ("Manuelles Backup", "Systembackup erfolgreich abgeschlossen!",0,1)
    Else
    TrayTip ("Backup konnte nicht erstellt werden", "Keine Verbindung zum Firmennetzwerk!",0,3)
    EndIf
    ; Case $TrayLog

    [/autoit][autoit][/autoit][autoit]

    Case $TrayExit
    Exit ;
    EndSwitch

    [/autoit][autoit][/autoit][autoit]

    if @hour = 8 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    TrayTip ("Automatisches Backup", "Automatisches Backup durchgeführt!",0,1)
    EndIf
    EndIf

    if @hour = 12 and @MIN = 30 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    TrayTip ("Automatisches Backup", "Automatisches Backup durchgeführt!",0,1)
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    if @hour = 16 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    Call("Backup")
    TrayTip ("Automatisches Backup", "Automatisches Backup durchgeführt!",0,1)
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Wend

    [/autoit][autoit][/autoit][autoit]

    Func Backup()
    TraySetState(4)
    Switch(@OSVersion)
    Case "WIN_7"
    MsgBox(2,"test","Windows 7")
    StringReplace(@DocumentsCommonDir,"Public",@UserName)
    msgbox(2,"",@DocumentsCommonDir)
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DocumentsCommonDir &'" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case "WIN_XP"
    MsgBox(2,"test","Windows XP")
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLo" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @UserProfileDir & '\Eigene Dateien" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case Default
    MsgBox(0 16,"Fehler!","Ihre Windowsversion wird nicht unterstützt. Bitte melden Sie sich bei der EDV")
    EndSwitch
    TraySetState(8)
    sleep(1000)
    EndFunc

    [/autoit]

    4 Mal editiert, zuletzt von KCChris (7. November 2013 um 14:09)

  • Moin,

    wie genau meinst du das mit dem Ausgegraut?

    Wenn du von einem Ordner oder einer Datei die Zeit auslesen möchtest (Erstellung oder Änderung) solltest du dir mal den Befehl "FileGetTime" anschauen.

    LG

  • Hab mir das jetzt mal angeschaut..


    Problem:Wenn ich TrayCreateItem in die Whileschleife nehm, erstellt er natürlich hunderte Trayitems, wenn ichs oben drin hab aktualisiert er das Datum nicht...

    Wie kann ich das am besten lösen?


    [autoit]


    #include <GUIConstants.au3>
    Opt('TrayMenuMode', 3)
    Opt('TrayAutoPause', 0)
    Opt('TrayIconHide', 0)
    Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
    ;Global $TrayLog = TrayCreateItem('LOG anzeigen')
    local $BackupZeit
    Global $LastBackup = TrayCreateItem('Letztes erfolgreiches Backup:' & $BackupZeit)
    Global $TrayExit = TrayCreateItem('Beenden')
    call("_ProgramFilesDir")
    TraySetClick(16)
    While 1
    Local $Zeit = FileGetTime ("U:\Backup")
    Local $BackupZeit = $Zeit[3] & "." & $Zeit[1] & "." & $Zeit[0] & " " & $Zeit[3] & ":" & $Zeit[4]

    [/autoit]
  • Funktioniert soweit.. Allerdings lese ich nun ja aus, wann der Order U:\Backup verändert wurde..
    Ist es möglich auszugeben wann genau die Funktion Backup() ausgeführt wurde?

    Ist es auch irgendwie möglich, dass das Programm jedes mal wenn es die Funktion Backup() ausführt etwas in eine Textdatei schreibt und beim nächsten Systemstart dann dort wieder ausgelesen wird, wann das letzte Backup stattgefunden hat?

    Grüße

    So funktionierts bisher:

    [autoit]


    #include <GUIConstants.au3>
    #Include <Constants.au3>
    Opt('TrayMenuMode', 3)
    Opt('TrayAutoPause', 0)
    Opt('TrayIconHide', 0)
    Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
    ;Global $TrayLog = TrayCreateItem('LOG anzeigen')
    local $BackupZeit
    Global $LastBackup = TrayCreateItem('Letztes erfolgreiches Backup:' & $BackupZeit)
    Global $TrayExit = TrayCreateItem('Beenden')
    call("_ProgramFilesDir")
    ;TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"Backup")
    TraySetClick(16)
    While 1
    Local $Zeit = FileGetTime ("U:\Backup")
    Local $BackupZeit = $Zeit[2] & "." & $Zeit[1] & "." & $Zeit[0] & " " & $Zeit[3] & ":" & $Zeit[4]
    TrayItemSetText($LastBackup,'Letztes erfolgreiches Backup: ' & $BackupZeit)

    [/autoit][autoit][/autoit][autoit]

    Switch TrayGetMsg()
    Case $TrayMan
    If Ping("nesdkbsvr01") > 0 Then
    If Not FileExists("U:\Backup") Then
    DirCreate ("U:\Backup")
    Endif
    If Not FileExists("U:\Backup\Documents") Then
    DirCreate ("U:\Backup\Documents")
    EndIf
    If Not FileExists("U:\BackupLog") Then
    DirCreate ("U:\BackupLog")
    Endif

    [/autoit][autoit][/autoit][autoit]

    Call("Backup")
    Else
    TrayTip ("Backup konnte nicht erstellt werden", "Keine Verbindung zum Firmennetzwerk!",0,3)
    EndIf
    ; Case $TrayLog

    Case $TrayExit
    Exit ;
    EndSwitch

    [/autoit][autoit][/autoit][autoit]

    if @hour = 8 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    EndIf
    EndIf

    if @hour = 12 and @MIN = 30 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    if @hour = 16 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    Call("Backup")
    EndIf
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Wend

    [/autoit][autoit][/autoit][autoit]

    Func Backup()
    TraySetState(4)
    Switch(@OSVersion)
    Case "WIN_7"
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DocumentsCommonDir &'" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case "WIN_XP"
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLo" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @UserProfileDir & '\Eigene Dateien" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case Default
    MsgBox(0 16,"Fehler!","Ihre Windowsversion wird nicht unterstützt. Bitte melden Sie sich bei der EDV")
    EndSwitch
    TrayTip ("Backup", "Systembackup erfolgreich durchgeführt!",0,1)
    TraySetState(8)
    sleep(1000)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von KCChris (7. November 2013 um 14:10)

  • Bitte verwende Spoiler für längere Quelltexte:
    Natürlich kannst du in eine Datei schreiben.

    [autoit]

    Fileopen()
    Filewrite()
    FIleread()
    Fileclose()

    [/autoit]

    Ist es möglich auszugeben wann genau die Funktion Backup() ausgeführt wurde?


    Während der Laufzeit kannst du eine Variable verwenden in der du den Zeitpunkt der letzten ausführung speicherst.
    Um die Info nach beenden des scripts nicht zu verlieren musst du sie in eine Datei schreiben (txt, ini, ...), oder in die Registry, oder du erstellst für jedes Backup einen neuen Ordner, dann kannst du den Erstell-Zeitpunkt auslesen

  • Uhrzeit ausgegraut als TrayItem:

    [autoit]


    Global $Test = TrayCreateItem( "" & @HOUR & ":" & @MIN & ":" & @SEC )
    TrayItemSetState( $Test, $TRAY_DISABLE )

    [/autoit]

    Ich hab ein bischen rumprobiert. Hab aber noch keine Möglichkeit gefunden eine Funktion auf ein deaktiviertes TrayItem zu legen.
    Was ich ehrlich gesagt auch für unschön halte. Denn welcher Nutzer ahnt schon das ein ausgegrauter Menupunkt eine Funktion hat.
    Mach lieber ein Untermenu unter dem Hauptmenupunkt "Kürzliche Backups" oder so ähnlich. Z.B kannst du in dem Untermenu zu jedem Backup ein TrayItem anlegen. Man sollte die Anzahl an Untermenupunkten allerdings begrenzen.

    Du solltest in Z. 15 vor FileGetTime noch prüfen ob der Ordner U:\Backup überhaupt existiert. Andernfalls kann es dir passieren das dieser Fehler auftaucht

    Code
    (16) : ==> Subscript used with non-Array variable.:
    Local $BackupZeit = $Zeit[2] & "." & $Zeit[1] & "." & $Zeit[0] & "   " & $Zeit[3] & ":" & $Zeit[4]
    Local $BackupZeit = $Zeit^ ERROR

    Noch eine Frage. Warum rufst du deine ganzen Funktionen mit Call auf?

    ~IRC: irc.afterworkchat.de #autoit

  • Du setzt einfach an den anfang der Funktion einen Befehl, der das ganze in eine Textdatei schreibt, und lässt das ganze dann dort wieder auslesen. Wahrscheinlich wäre hier auch eine INI Datei besser als eine Textdatei, wenn du mehrere Infos abspeichern möchtest.

    Schau dir dazu am besten "INIWrite" und "INIRead" an ;)

  • Warum packst du die letzte Backup Abfrage in die While 1 schleife?
    Solange du kein Backup startest wird sich auch die letzte Backupzeit nicht ändern
    Du erzeugst nur unnötig Last...

    [autoit]

    While 1
    Local $Zeit = FileGetTime ("U:\Backup")
    Local $BackupZeit = $Zeit[2] & "." & $Zeit[1] & "." & $Zeit[0] & " " & $Zeit[3] & ":" & $Zeit[4]
    TrayItemSetText($LastBackup,'Letztes erfolgreiches Backup: ' & $BackupZeit)

    [/autoit]
  • Programm funktioniert soweit. Jetzt gibts noch eine Sache:

    Das Programm soll erkennen ob der Benutzer über VPN verbunden ist (kein Backup) oder direkt mit dem Firmennetzwerk lokal...

    Gibts da 'ne andere Möglichkeit außer Pings abzugleichen?

    Grüße


    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <Constants.au3>
    Opt('TrayMenuMode', 3)
    Opt('TrayAutoPause', 0)
    Opt('TrayIconHide', 0)
    Global $TrayMan = TrayCreateItem('Manuelles Backup starten')
    ;Global $TrayLog = TrayCreateItem('LOG anzeigen')
    local $BackupZeit
    Global $LastBackup = TrayCreateItem('testestetst')
    TrayItemSetState($LastBackup, $TRAY_DISABLE)
    Global $TrayExit = TrayCreateItem('Beenden')
    call("_ProgramFilesDir")
    TraySetClick(16)
    Global $LastBackupText = IniRead("U:\Backup\Backup.ini","Backup","LastBackup","Error")
    TrayItemSetText($LastBackup,$LastBackupText)
    While 1

    [/autoit] [autoit][/autoit] [autoit]

    Switch TrayGetMsg()
    Case $TrayMan
    If Ping("nesdkbsvr01") > 0 Then
    If Not FileExists("U:\Backup") Then
    DirCreate ("U:\Backup")
    Endif
    If Not FileExists("U:\Backup\Documents") Then
    DirCreate ("U:\Backup\Documents")
    EndIf
    If Not FileExists("U:\BackupLog") Then
    DirCreate ("U:\BackupLog")
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    Call("Backup")
    Else
    TrayTip ("Backup konnte nicht erstellt werden", "Keine Verbindung zum Firmennetzwerk!",0,3)
    EndIf
    ; Case $TrayLog

    Case $TrayExit
    Exit ;
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    if @hour = 8 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    EndIf
    EndIf

    if @hour = 12 and @MIN = 30 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    call("Backup")
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    if @hour = 16 and @MIN = 0 and @SEC = 0 Then
    TraySetState(4)
    If Ping("Server") > 0 Then
    Call("Backup")
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func Backup()
    TraySetState(4)
    Switch(@OSVersion)
    Case "WIN_7"
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DocumentsCommonDir &'" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case "WIN_XP"
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @DesktopDir & '" -d "U:\Backup" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLo" -dateformat "$dd.$mm.$yy" -exit')
    RunWait('"'& @ProgramFilesDir &'\DirSync\DirSync.exe" -s "' & @UserProfileDir & '\Eigene Dateien" -d "U:\Backup\Documents" -start -nostats -nowin -timediff 2 -noautoreport -logdir "U:\BackupLog" -dateformat "$dd.$mm.$yy" -exit')
    Case Default
    MsgBox(0 16,"Fehler!","Ihre Windowsversion wird nicht unterstützt. Bitte melden Sie sich bei der EDV")
    EndSwitch
    TrayTip ("Backup", "Systembackup erfolgreich durchgeführt!",0,1)
    IniWrite("U:\Backup\Backup.ini","Backup","LastBackup","Letzte Sicherung: " & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & " : " & @MIN & " : " & @SEC)
    $LastBackupText = IniRead("U:\Backup\Backup.ini","Backup","LastBackup","Error")
    TrayItemSetText($LastBackup,$LastBackupText)
    TraySetState(8)
    sleep(1000)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von KCChris (7. November 2013 um 14:11)

  • Na gut, scheinbar nicht..

    Ist es denn möglich den Text zu ändern, der beim Mouseover über das TrayIcon erscheint?

    Momentan steht da ja nur "Backup.exe" bzw der Programmname.

    Grüße

  • TraySetToolTip()

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Das Programm soll erkennen ob der Benutzer über VPN verbunden ist (kein Backup) oder direkt mit dem Firmennetzwerk lokal...


    Lösungen gibt es sicher einige aber wir bräuchten ein paar Infos mehr.
    Wie baut ihr euer VPN denn auf?
    Vergebt ihr für VPN Clients bestimmte IP's?
    Fragen die VPN Clients einen anderen DC/DNS ab?
    Gibt es eine VPN Client Software?
    Usw...