#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