_Full_Backup (Funktion um ein Vollbackup zu machen)

  • Hi,
    da ich momentan dabei bin ein Backupprogramm zu schreiben und eben die Funktion für Fullbackup fertig gestellt habe, dachte ich mir ich stelle diese mal hier rein. Evtl. kann die jemand anders ja auch mal gebrauchen und/oder es hat jemand Verbesserungsvorschläge. Soweit wünsch ich erstmal viel Spaß damit ;)

    [autoit]

    #include <Date.au3>
    ;==========================================================================================================================================
    ; Function: _Full_Backup(ByRef $srcDir, ByRef $destDir, ByRef $sIntervall)
    ;
    ; Beschreibung: Macht ein Full-Backup von einen Medium
    ;
    ; Parameter(s): $srcDir - Quelle des Mediums wovon ein Backup gemacht werden soll
    ; $destDir - Ziel wo das Backup gesichert werden soll
    ; $sIntervallDay - Intervall mit den das Backup arbeitet
    ;
    ; Anforderung(en): Keine
    ;
    ; Rückgabewert(e): Bei Erfolg - Returns 1
    ; Bei Fehler - Returns 0
    ;
    ; Notizen: Es müssen folgende Variablen wie folgt deklariert werden:
    ;~ $sDay = @MDAY
    ;~ $sMonth = @MON
    ;~ $sTimeOf = @HOUR & ":" & @MIN
    ;
    ; Autor(s): AltairKD
    ;==========================================================================================================================================
    Func _Full_Backup(ByRef $srcDir, ByRef $destDir, ByRef $sIntervall)
    If @HOUR & ":" & @MIN = $sTimeOf And @MDAY = $sDay And @MON = $sMonth Then
    Local $tsBeginn = _NowCalc(), $tsDiff = -1, $tsRest
    If StringRight($srcDir, 1) = "\" Then $srcDir = StringLeft($srcDir, StringLen($srcDir) - 1)
    If StringRight($destDir, 1) <> "\" Then $destDir = $destDir & "\"
    If Not FileExists($destDir) Then DirCreate($destDir)
    $srcSize = DirGetSize($srcDir, 1)
    $1_percent = $srcSize[0] / 100
    Run('XCOPY "' & $srcDir & '" "' & $destDir & '" /D /S /E /V /C /H /R /O /Y /F /G', @ScriptDir, @SW_HIDE)
    ProgressOn("Advanced status of file copying", "", "", 10, 10)
    Do
    If $tsDiff < 0 Then Sleep(5000)
    $destSize = DirGetSize($destDir, 1)
    $tsDiff = _DateDiff("s", $tsBeginn, _NowCalc())
    $tsRest = Round($tsDiff / ($destSize[0] / $1_percent) * 100, 0) - $tsDiff
    ConsoleWrite($tsDiff & " " & $1_percent & " " & $tsRest & @CRLF)
    ProgressSet(Round($destSize[0] / $1_percent, 2), Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2) & " MB copied" & @CRLF _
    & $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
    & $destSize[2] & " of " & $srcSize[2] & " Folders copied.", Round($destSize[0] / $1_percent, 2) & "% - Done! " & $tsRest & " sec. Rest")
    Sleep($tsDiff)
    Until $destSize[0] >= $srcSize[0]
    MsgBox(0, "Fertig in " & $tsDiff & " sec.", Round($destSize[0] / (1024 * 1024), 2) & " MB of " & Round($srcSize[0] / (1024 * 1024), 2) & " MB copied" & @CRLF _
    & $destSize[1] & " of " & $srcSize[1] & " Files copied." & @CRLF _
    & $destSize[2] & " of " & $srcSize[2] & " Folders copied." & @CRLF & Round($destSize[0] / $1_percent, 2) & "% - Done! ")
    ProgressOff()
    If Not @error Then
    $sDay += $sIntervall
    Else
    MsgBox(16, "Error", "Error 001: errors during the copy")
    Return 0
    Exit
    EndIf
    Else
    Return 0
    EndIf
    Return 1
    EndFunc ;==>_Full_Backup

    [/autoit]
  • Sieht erstmal gut aus. Kanns im moment nicht ausprobieren (Zu wenig Platz auf der Platte)

    Aber wenn ich das ganze mal starte kommt

    D:\Downloads\_Full_Backup.au3(24,35) : WARNING: $sTimeOf: possibly used before declaration.
    If @HOUR & ":" & @MIN = $sTimeOf And
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\Downloads\_Full_Backup.au3(24,53) : WARNING: $sDay: possibly used before declaration.
    If @HOUR & ":" & @MIN = $sTimeOf And @MDAY = $sDay And
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\Downloads\_Full_Backup.au3(24,72) : WARNING: $sMonth: possibly used before declaration.
    If @HOUR & ":" & @MIN = $sTimeOf And @MDAY = $sDay And @MON = $sMonth Then
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\Downloads\_Full_Backup.au3(24,35) : ERROR: $sTimeOf: undeclared global variable.
    If @HOUR & ":" & @MIN = $sTimeOf And
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    Augen auf dann sieht mann sowas :D

  • @Sprenger:

    ; Notizen: Es müssen folgende Variablen wie folgt deklariert werden:
    ;~ $sDay = @MDAY
    ;~ $sMonth = @MON
    ;~ $sTimeOf = @HOUR & ":" & @MIN