Hi,
Das hier wurde aus diesem hier
Da trotz mehreren Festplatten durch Fehler von Windows (meist ausgelöst durch mich ) meine ganzen Skripte bereits mehrmals gelöscht wurden, hatte ich die Idee für dieses Skript.
Die Funktionen bestehen:
- Im sichern meiner Skripte (wer hätte das gedacht)
- Dabei sichert es nur die für mich relevanten Daten.
- Die Skripte werden als Zip oder sequenzielle Tar komprimiert auf einen FTP Server hochgeladen werden.
- Dateien die älter als x Tage sind werden automatisch gelöscht.
- Die Zeit bis zum ersten Backup und den darauf folgenden kann eingestellt werden
Da ich dieses Skript eigentlich nur für mich gecoded habe, stelle es hauptsächlich hier rein, um Feedback und vielleicht Verbesserungsvorschläge zu bekommen (Kürzungen,Optimierungen, etc.)
Sollte es dennoch jemand brauchen, kann er es gerne benutzen. Mann muss dann ggf. noch die Pfade anpassen.
Hier nun das Skript:
Spoiler anzeigen
; Copyright by Orion (autoit.de)
[/autoit] [autoit][/autoit] [autoit]; THX [user='66']BugFix[/user] (_GetFilesFolder_Rekursiv.au3) & UEZ (_Bese64String)
[/autoit] [autoit][/autoit] [autoit]#include <_GetFilesFolder_Rekursiv.au3>
#include <FTPEx.au3>
#include <misc.au3>
#include <Date.au3>
#include <Crypt.au3>
#include <7zip.au3>
_Singleton(@ScriptName) ;Nur eine Instanz des Skripts erlauben
OnAutoItExitRegister("_Exit") ;Wenn Skript beendet, dann führe die Function _Exit() aus
#region - Konstanten
Global Const $sOrdner = "Skripte" ;Ordnername
Global Const $pPath = @DesktopDir & "\" & $sOrdner ;Pfad zum Ordner
Global Const $sServername = "***" ;Addresse des FTP Server
Global Const $sBenutzername = "***" ;Benutzername für den FTP Server
Global Const $sPasswort = "***" ;Passwort für den FTP Server
Global Const $iZeit = 30 ;Backupinterval in Minuten
Global Const $iStartzeit = 30 ;Zeit bis zum ersten Backup in Minuten
Global Const $iTage = 30 ;Tage bis alte Skripte gelöscht werden
Global Const $bTar = False ;Tar anstatt Zip komprimierung verwenden (default Zip)
#endregion - Konstanten
Global $sDateiendung = ".zip"
If $bTar Then $sDateiendung = ".tar"
Opt("TrayIconHide", 1) ;Icon verstecken
Sleep(($iStartzeit * 60 * 1000)) ;Zeit bis zum ersten Backup in Minuten
_base64string() ;7-Zip aus dem Binärstrang nach @TempDir speichern
While 1
Opt("TrayIconHide", 0)
_Save()
Opt("TrayIconHide", 1)
Sleep(($iZeit * 60 * 1000)) ;Backupinterval in Minuten
WEnd
Func _Save()
TrayTip("Saver", $sOrdner & " werden komprimiert & hochgeladen...", 10, 1)
Sleep(2000)
TrayTip("", "", 0)
_TmpCreate()
If _SaveToInet() = 0 Then
TrayTip("Error", "Abgleich mit dem Server Fehlgeschlagen!", 30, 3)
Sleep(2500)
Return
EndIf
TrayTip("", "", 0)
Sleep(300)
TrayTip("Saver", "Erfolgreich hochgeladen", 30, 1)
Sleep(2250)
TrayTip("", "", 0)
EndFunc ;==>_Save
Func _TmpCreate()
DirRemove(@TempDir & "\" & $sOrdner, 1)
DirCreate(@TempDir & "\" & $sOrdner)
DirCopy($pPath & "\Meine Skripte", @TempDir & "\" & $sOrdner & "\Meine Skripte", 1)
DirCreate(@TempDir & "\" & $sOrdner & "\Fremde Skripte")
DirCopy($pPath & "\Fremde Skripte\UDFs", @TempDir & "\" & $sOrdner & "\Fremde Skripte\UDFs", 1)
Local $aHidefiles = _GetFilesFolder_Rekursiv(@TempDir & "\" & $sOrdner & "\", "*", 0)
For $i = 1 To $aHidefiles[0]
If StringRight($aHidefiles[$i], 2) = "db" Then FileDelete($aHidefiles[$i])
Next
EndFunc ;==>_TmpCreate
Func _SaveToInet()
Local $hFtpopen = _FTP_Open(Random(1, 1000, 1), $INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY)
Local $hFtpconnect = _FTP_Connect($hFtpopen, $sServername, $sBenutzername, $sPasswort, 0)
If $bTar Then RunWait(@ComSpec & " /c " & @TempDir & "\7za.exe " & "a -ttar """ & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & ".tar"" -r0 " & @TempDir & "\" & $sOrdner & "\*", @TempDir, @SW_HIDE)
If Not $bTar Then RunWait(@ComSpec & " /c " & @TempDir & "\7za.exe " & "a -tzip -mx9 """ & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & ".zip"" -r0 " & @TempDir & "\" & $sOrdner & "\*", @TempDir, @SW_HIDE)
If _FTP_FilePut($hFtpconnect, @TempDir & "\" & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & $sDateiendung, "/Autoit (AutoBackUp)/" & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & $sDateiendung) = 0 Then Return 0
If _FTP_DirSetCurrent($hFtpconnect, "/Autoit (AutoBackUp)/") = 0 Then Return 0
Local $aDateien = _FTP_ListToArray($hFtpconnect, 2)
$iCounter = 0
For $i = 1 To $aDateien[0]
$aStartdatearray = StringRegExp($aDateien[$i],"(\d{2})\.(\d{2})\.(\d{4})",3)
$sStartdate = $aStartdatearray[2] & "/" & $aStartdatearray[1] & "/" & $aStartdatearray[0]
If Abs(_DateDiff("D", $sStartdate, _NowCalcDate())) >= $iTage Then
_FTP_FileDelete($hFtpconnect, $aDateien[$i])
$iCounter += 1
EndIf
Next
If $iCounter = 1 Then
TrayTip("Saver", "Es wurde " & $iCounter & " Datei, die älter war als " & $iTage & " Tage gelöscht", 30, 2)
Sleep(5500)
ElseIf $iCounter > 1 Then
TrayTip("Saver", "Es wurden " & $iCounter & " Dateien, die älter waren als " & $iTage & " Tage gelöscht", 30, 2)
Sleep(5500)
EndIf
If _FTP_Close($hFtpopen) = 0 Then Return 0
If Not $bTar Then FileDelete(@TempDir & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & ".zip")
If $bTar Then FileDelete(@TempDir & $sOrdner & " vom " & @MDAY & "." & @MON & "." & @YEAR & ".tar")
Return 1
EndFunc ;==>_SaveToInet
Func _Exit()
FileDelete(@TempDir & "\7za.exe")
EndFunc ;==>_Exit
Im Anhang findet ihr die UDF und 7-Zip
lg Orion