Backup Data directory

Discuss and share scripts and script files...
Post Reply
John_C
Posts: 336
Joined: 16 May 2018 20:04

Backup Data directory

Post by John_C »

An AutoHotkey script to backup arbitrary folder. You can use it to backup XYplorer data folder or something else (I have assigned it to a user button on the toolbar). It doesn't have some safety bells (e.g. it doesn't check the existence and contents of DestinDir variable), because I tried to keep it short and simple.

With its current settings it's implied that it is located it Data directory itself.

Code: Select all

#NoEnv
EnvGet, A_UserProfile, UserProfile

; PREFERENCES

; 1) Which folder to backup

;    EXAMPLE
;    ------------------------------------------
;    SourceDir := A_Desktop . "\Test"
;    ------------------------------------------

     SourceDir := A_ScriptDir

; 2) Which folders and files to exclide from backup

;    EXAMPLE
;    ------------------------------------------
;    ExcludedDirsArray := []
;    ExcludedDirsArray.Push(SourceDir . "\Foo")
;    ExcludedDirsArray.Push(SourceDir . "\Bar")
;    ------------------------------------------

;    EXAMPLE
;    ------------------------------------------
;    ExcludedDirsArray := []
;    ExcludedDirsArray.Push() ; If you don't need to exlude anything
;    ------------------------------------------

     ExcludedDirsArray := []
     ExcludedDirsArray.Push()
     ExcludedDirs := ""
     For Index, Value In ExcludedDirsArray {
         ExcludedDirs .= " """ . Value . """"
     }
     ExcludedDirs := LTrim(ExcludedDirs, " ")

;    EXAMPLE
;    ------------------------------------------
;    ExcludedFilesArray := []
;    ExcludedFilesArray.Push(SourceDir . "\Foo.ext")
;    ExcludedFilesArray.Push(SourceDir . "\Bar.ext")
;    ------------------------------------------

     ExcludedFilesArray := []
     ExcludedFilesArray.Push()
     ExcludedFilesArray.Push()
     ExcludedFiles := ""
     For Index, Value In ExcludedFilesArray {
         ExcludedFiles .= " """ . Value . """"
     }
     ExcludedFiles := LTrim(ExcludedFiles, " ")

; 3) Where to backup

;    EXAMPLE
;    ------------------------------------------
;    DestinDir := A_Desktop . "\Backup"
;    ------------------------------------------

     DestinDir := A_ScriptDir . "\_Backup"

; 4) Silent mode

     Silent := True

; MAIN PART

If InStr(DestinDir, SourceDir) {
    ExcludedDirs .= " """ . DestinDir . """"
}

FormatTime, Timestamp,, yyyy MM dd - HH mm ss
RegExMatch(SourceDir, "^(.*\\)(.*)$", Subpattern)
X := Subpattern2 . " @ " . Timestamp
TempDirX := A_Temp . "\" . X
DestinDirX := DestinDir . "\" . X

If (Silent) {
    RunWait, %ComSpec% /c robocopy "%SourceDir%" "%TempDirX%" /e /xd %ExcludedDirs% /xf %ExcludedFiles%,, Hide
}
Else {
    RunWait, %ComSpec% /k robocopy "%SourceDir%" "%TempDirX%" /e /xd %ExcludedDirs% /xf %ExcludedFiles%
}

FileMoveDir, % TempDirX, % DestinDirX
If (ErrorLevel) {
    FileRemoveDir, % TempDirX, 1
    MsgBox, 16,, % "Something went wrong. Backup isn't completed."
}
Else {
    MsgBox, 64,, % "Backup is successfully performed:`n" . DestinDir . "\`n" . X
}

highend
Posts: 13309
Joined: 06 Feb 2011 00:33

Re: Backup Data directory

Post by highend »

You could do the same with XYs scripting language with less code...
One of my scripts helped you out? Please donate via Paypal

Post Reply