Backup Skript - Fragen....
Posted: 11 May 2021, 01:30
Ich habe folgendes Backup-Skript gefunden....
Allerdings verstehe ich leider nicht ganz wie genau es funktionieren soll.
Vielleicht hat Jemand Lust und Zeit ein paar Infos abzugeben.
Ein solches Skript ist mit Sicherheit auch für andere User von Interesse!
Allerdings verstehe ich leider nicht ganz wie genau es funktionieren soll.
Vielleicht hat Jemand Lust und Zeit ein paar Infos abzugeben.
Ein solches Skript ist mit Sicherheit auch für andere User von Interesse!
Code: Select all
#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#NoEnv ; Nicht nachsehen, ob leere Variablen evtl. Umgebungsvariablen sind, beschleunigt die Laufzeit
#SingleInstance force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
SetWorkingDir %A_ScriptDir% ; Dateioperationen finden im Scriptverzeichnis statt, falls kein Pfad angegeben wird!
; Skript von= KuroiLight - https://www.autohotkey.com/boards/viewtopic.php?t=41712
CreateDirectoryBackup(".\FolderOrigin", ".\FolderDest")
return
CreateDirectoryBackup(Source_Directory, Dest_Directory) {
Source_Directory := AbsolutePath(Source_Directory) . ((SubStr(Source_Directory, 0, 1) == "\") ? "" : "\")
Dest_Directory := AbsolutePath(Dest_Directory) . ((SubStr(Dest_Directory, 0, 1) == "\") ? "" : "\")
if(!FileExist(Dest_Directory))
FileCreateDir, %Dest_Directory%
; Verzeichnis-Layout erstellen
Loop, Files, %Source_Directory%*, RD
{
New_Dir := StrReplace(A_LoopFileLongPath, Source_Directory, "")
FileCreateDir, % Dest_Directory . New_Dir
}
; Backup Dateien
Loop, Files, %Source_Directory%*, RF
{
New_Filename := StrReplace(A_LoopFileLongPath, Source_Directory, "")
FileGetTime, Backup_ModificationTime, % Dest_Directory . New_Filename, M
if(!FileExist(Dest_Directory . New_Filename) or Backup_ModificationTime != A_LoopFileTimeModified) {
FileCopy, %A_LoopFileLongPath%, % Dest_Directory . New_Filename, 1
FileSetTime, %A_LoopFileTimeModified%, % Dest_Directory . New_Filename, M
FileSetAttrib, %A_LoopFileAttrib%, % Dest_Directory . New_Filename, 1, 0
}
}
; Spiegellöschungen - mirror deletions
Loop, Files, %Dest_Directory%*, RFD
{
Alt_Filename := StrReplace(A_LoopFileLongPath, Dest_Directory, "")
if(!FileExist(Source_Directory . Alt_Filename)) {
FileSetAttrib, N, %A_LoopFileLongPath%, 1, 0
if(InStr(A_LoopFileAttrib, "D"))
FileRemoveDir, %A_LoopFileLongPath%, 1
else
FileDelete, %A_LoopFileLongPath%
}
}
}
AbsolutePath(filename) { ; Nicht wirklich notwendig, hilft aber, mögliche Probleme zu vermeiden
if(!filename)
Throw, "AbsolutePath(): Übergebener Parameter ist ungültig."
if(filename ~= "S)^\..+$") {
filename := A_WorkingDir . SubStr(filename, 2)
}
Loop {
filename := RegExReplace(filename, "S)^(.+\\)?.+[^\.]{2}\.\.[\\]?(.+)?$", "$1$2", replaces)
} Until !replaces
return filename
}