Moin @BoBo,
wie ich das sehe, startet er Robocopy nicht direkt sondern innerhalb eines CMD-Fensters. Fehler sollten deshalb dort sichtbar sein, es sei denn, deren Anzeige wird durch Robocopy-Optionen verhindert.
Backup Skript - Fragen....
Moderator: jNizM
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
Ja jetzt ist zumindest etwas zu sehen...
Es sieht aus als ob ein " zu viel oder zu wenig ist, oder?
Es sieht aus als ob ein " zu viel oder zu wenig ist, oder?
----------------------------FEHLER: Es wurde kein Zielverzeichnis angegeben.
Und hier das Skript noch einmal=-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren für Windows
-------------------------------------------------------------------------------
Gestartet: Freitag, 14. Mai 2021 15:54:00
Quelle : C:\Users\Mr-7\Scoutsystems" D:\test \UNICODE \S \E \DCOPY:DA \COPY:DAT \PURGE \MIR \MT:4 \R:5 \W:30 \UNILOG+:D:\test\zzz_Log_Copied_files.txt\
Ziel -
Dateien : *.*
Optionen: *.* /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
FEHLER: Es wurde kein Zielverzeichnis angegeben.
Einfache Syntax :: ROBOCOPY Quelle Ziel /MIR
Quelle :: Quellverzeichnis (Laufwerk:\Pfad oder
\\Server\Freigabe\Pfad)
Ziel :: Zielverzeichnis (Laufwerk:\Pfad oder
\\Server\Freigabe\Pfad)
/MIR :: Spiegelt eine vollständige Verzeichnisstruktur.
Weitere Informationen erhalten Sie über den Befehl "ROBOCOPY /?"
**** Der Befehl "/MIR" kann Dateien sowohl kopieren als auch LÖSCHEN.
autohotkey-robocopy-test
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
Ich bin mir nicht sicher, aber der abschließende Backslash in Quelle_001 könnte ein Problem sein.
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
@just me
Genau, das war es, vielen Dank!
Zwar bleibt wieder die Logfile Problematik mit den Umlauten, aber bekanntlich kann man nicht Alles haben!
Genau, das war es, vielen Dank!
Zwar bleibt wieder die Logfile Problematik mit den Umlauten, aber bekanntlich kann man nicht Alles haben!
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
Ich weiß immer noch nicht, bei welcher Gelegenheit für Dich ein 'Umlautproblem' entsteht.
Ansonsten:
Du weißt schon, dass die Option
das neue LOG an ein bestehendes anhängt?
Ansonsten:
Du weißt schon, dass die Option
Code: Select all
\UNILOG+:D:\test\zzz_Log_Copied_files.txt ; + hängt die Daten an eine vorhandene Datei an
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
Falls es Jemand gebrauchen kann=
Ziel und Quelle lassen sich natürlich beliebig austauschen.
Nach wie vor besteht hier aber das Problem mit den Umlauten im Logfile.
Da aber die Kopie trotzdem einwandfrei ist, könnte das vernachlässigt werden...
Mit den Optionen für Robocopy kann entsprechend experimentiert werden.
Hier mal eine deutsche Anleitung=
https://www.tecchannel.de/a/robocopy-daten-schnell-und-einfach-unter-windows-sichern,2033515,2
Bei Produktivverzeichnissen ist selbstverständlich Vorsicht geboten!
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!
; #Warn
Quelle_001 := "C:\Users\" A_UserName "\Scoutsystems"
Ziel_001 := "D:\test"
; Kopierbefehl = Robocopy "%Quelle_001%" "%Ziel_001%" /E /R:10 /W:5 /MT:2 /UNICODE /UNILOG+:"%Ziel_001%\zzz_Log_Copied_files.txt"
Kopierbefehl := A_WinDir . "\System32\Robocopy.exe """ . Quelle_001 . """ """ . Ziel_001 . """ /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /MT:8 /R:5 /W:30 /XF *.log /UNICODE /UNILOG+:""" . Ziel_001 . "\zzz_Logfile_Copy.log"""
; runwait, %comspec% /k %Kopierbefehl%, ,Hide
runwait, %comspec% /c %Kopierbefehl%, , Hide
; MsgBox, 262144, = Immer im Vordergrund (WS_EX_TOPMOST-Style) (Wie System Modal, aber ohne Icon in der Titelleiste)
MsgBox, 262144, >> Backup erfolgreich, ###########################################`n###########################################`n`n`nDer Faktura Kopiervorgang ist abgeschlossen!`n`n`n###########################################`n###########################################
ExitApp
Nach wie vor besteht hier aber das Problem mit den Umlauten im Logfile.
Da aber die Kopie trotzdem einwandfrei ist, könnte das vernachlässigt werden...
Mit den Optionen für Robocopy kann entsprechend experimentiert werden.
Hier mal eine deutsche Anleitung=
https://www.tecchannel.de/a/robocopy-daten-schnell-und-einfach-unter-windows-sichern,2033515,2
Bei Produktivverzeichnissen ist selbstverständlich Vorsicht geboten!
Greetings Best-Code-in-Use
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
@just me
...das folgende Umlautproblem in der Robocopy Logdatei=
https://qastack.com.de/superuser/295934/robocopy-unilog-output-is-gibberish
Manchmal ist es nicht nachvollziehbar...
Ich habe jetzt das "+" Zeichen entfernt.
Dieses sorgt ja lediglich dafür, wie Du zuvor schon geschrieben hast, das eine neue Logdatei an die alte Logdatei angehängt wird, und jetzt funktioniert die Erzeugung der Logdatei korrekt...
...das folgende Umlautproblem in der Robocopy Logdatei=
Dateiname (es war ein Test versteht sich)=Dies-ist-ein-Test-ber-die™rger„rgelšPSIE.txt
Das Problem wird auch hier beschrieben=Dies-ist-ein-Test-über-dieÖrgerärgelÜPSIE.txt
https://qastack.com.de/superuser/295934/robocopy-unilog-output-is-gibberish
Manchmal ist es nicht nachvollziehbar...
Ich habe jetzt das "+" Zeichen entfernt.
Dieses sorgt ja lediglich dafür, wie Du zuvor schon geschrieben hast, das eine neue Logdatei an die alte Logdatei angehängt wird, und jetzt funktioniert die Erzeugung der Logdatei korrekt...
Kopierskript
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
Ein paar Vorschläge noch:
- Befehl /mir (Spiegelt eine Verzeichnisstruktur wieder (äquivalent zu /e und /Purge))
Wenn du /mir verwendest kannst du eigtl /e und /purge weg lassen.
- Befehl /MT:[:n] (Erstellt multithreadkopien mit n Threads. n muss eine ganze Zahl zwischen 1 und 128 sein.)
Wenn es ein handelsüblicher Rechner mit (i5 oder höher) ist und es viele kleinere Dateien sind, würde ich /MT:4 oder /MT:8 verwenden
Bei einem PC mit i7 oder höher oder sogar einem Server gerne auch /MT:16
Ref: https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/robocopy
- Befehl /mir (Spiegelt eine Verzeichnisstruktur wieder (äquivalent zu /e und /Purge))
Wenn du /mir verwendest kannst du eigtl /e und /purge weg lassen.
- Befehl /MT:[:n] (Erstellt multithreadkopien mit n Threads. n muss eine ganze Zahl zwischen 1 und 128 sein.)
Wenn es ein handelsüblicher Rechner mit (i5 oder höher) ist und es viele kleinere Dateien sind, würde ich /MT:4 oder /MT:8 verwenden
Bei einem PC mit i7 oder höher oder sogar einem Server gerne auch /MT:16
Ref: https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/robocopy
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Re: Backup Skript - Fragen....
EDIT 20210520 : 2nd logfile Zusammenfassung nur "Neue Datei / Neuer / Neues Verz."
vielen Dank für eure Hilfe
Hier ein Beispiel mit GUI , auch ohne robocopy-Logfile-Befehl ( logfile mit CMDRET )
EDIT = dies entfernt >> unten kann man noch DOS Befehle eingeben
teadrinker's CMDRET zeigt alles richtig an , auch chinesische Characters
2nd logfile Zusammenfassung nur "Neue Datei / Neuer / Neues Verz." ( Beispiel für 2 Folder )
Ich habe am Kleinstcomputer 2 Laufwerke, C:\ und D:\ , beim Anschliessen eines Harddisks an USB soll es auf Laufwerk E:\ bzw. x-beliebig der nächste HD , z.B. auf Harddisk Q:\ kopieren
Hier ein Beispiel um 2 Ordner zu kopieren , es wird angezeigt was kopiert werden soll und welcher Ordner grad kopiert wird
EDIT : erstellt 2 logfiles : alles / nur Neue / geänderte
vielen Dank für eure Hilfe
Hier ein Beispiel mit GUI , auch ohne robocopy-Logfile-Befehl ( logfile mit CMDRET )
EDIT = dies entfernt >> unten kann man noch DOS Befehle eingeben
teadrinker's CMDRET zeigt alles richtig an , auch chinesische Characters
2nd logfile Zusammenfassung nur "Neue Datei / Neuer / Neues Verz." ( Beispiel für 2 Folder )
Code: Select all
================================
Gestartet: Donnerstag, 20. Mai 2021 11:49:48
Quelle : D:\M_YVONNE\
Ziel : F:\_BEELINK\M_YVONNE\
--------------------------
Neue Datei 7468 2021/03/07 15:13:00 D:\M_YVONNE\多线程系统代理下载tube1080p视频_20210307161303.ahk
--------------------------
Insgesamt Kopiert Skipped No match FEHLER Extras
Verzeich.: 109 0 109 0 0 39
Dateien: 1457 1 1456 0 0 117
Bytes: 4.443 g 7.2 k 4.443 g 0 0 1020.71 m
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Geschwindigkeit: 240903 Bytes/Sek.
Geschwindigkeit: 13.784 Megabytes/Min.
Beendet: Donnerstag, 20. Mai 2021 11:49:49
================================ ENDXX ================================
================================
Gestartet: Donnerstag, 20. Mai 2021 11:49:51
Quelle : C:\users\garry\desktop\
Ziel : F:\_BEELINK\DESKTOP\
--------------------------
Neuer 12422 2021/05/20 09:49:18 C:\users\garry\desktop\FAV_TEST\ROBOCOPY\Robocopy_TEST_09.ahk
Neue Datei 81895 2021/05/20 09:46:51 C:\users\garry\desktop\ROBOCOPY_LOG\20210520114651_Robocopy_Log_cmdret.txt
Neue Datei 1819 2021/05/20 09:46:52 C:\users\garry\desktop\ROBOCOPY_LOG\20210520114652_Robocopy_New.txt
--------------------------
Insgesamt Kopiert Skipped No match FEHLER Extras
Verzeich.: 260 0 260 0 0 52
Dateien: 3119 3 3116 0 0 336
Bytes: 996.06 m 93.8 k 995.97 m 0 0 2.128 g
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Geschwindigkeit: 3101161 Bytes/Sek.
Geschwindigkeit: 177.449 Megabytes/Min.
Beendet: Donnerstag, 20. Mai 2021 11:49:52
================================ ENDXX ================================
Ich habe am Kleinstcomputer 2 Laufwerke, C:\ und D:\ , beim Anschliessen eines Harddisks an USB soll es auf Laufwerk E:\ bzw. x-beliebig der nächste HD , z.B. auf Harddisk Q:\ kopieren
Hier ein Beispiel um 2 Ordner zu kopieren , es wird angezeigt was kopiert werden soll und welcher Ordner grad kopiert wird
EDIT : erstellt 2 logfiles : alles / nur Neue / geänderte
Code: Select all
;============ ROBOCOPY ==============================================
;MODIFIED = 20210520
;CREATED = 20210401
;- example robocopy for computer with 2 drives C:\ and D:\ >> copy to followed drive 'X'
;- changes =
;- logfile wird durch CMDRET ( from user teadrinker ) erstellt
;- 2nd logfile nur für "Neue Datei/Neuer/Neues Verz."
;====================================================================
;#warn
#Noenv
Setworkingdir,%a_scriptdir%
;----------------------------
gosub,drivegetshow
;----------------------------
;----------------------------
total:=2
;-------------- example copy 2 folders to next drive X ----------------
source1=%a_desktop%\TEST2 ; C:\users\garry\desktop\TEST2
dest1 =%last%_BEELINK\DESKTOP\TEST2 ; E:\_BEELINK\DESKTOP\TEST2 ( lastdrive example E:\ or another drive letter after C:\ and D:\ )
;--------
source2=%seclast%M_GARRY\GAMES ;- D:\M_GARRY\GAMES
dest2 =%last%_BEELINK\M_GARRY\GAMES ;- E:\_BEELINK\M_GARRY\GAMES
;-----------------------------------------------------------------------
alldest=%source1% >> %dest1%`n%source2% >> %dest2%`n
;========================================================================
fd1=%a_desktop%\ROBOCOPY_LOG
ifnotexist,%fd1%
filecreatedir,%fd1%
;----------------------------
;============== GUI ===========
name1:="DOS_TEST"
global name1
e:=""
cpx:="cp65001"
Gui,1:default
Gui,1: -DPIScale
Gui,1:Color,Black,Black
wa:=A_screenwidth,ha:=A_screenHeight,xx:=100
;- maybe change fontsize
;============ GUISIZEx DPIx 4Kx 3840*2160 is 100% ============
if (wa=3840)
Gui,1:Font,s12 cYellow,Lucida Console
;============ GUISIZEx DPIx FHD 1920*1080 is 100% ============
else if (wa=1920)
Gui,1:Font,s10 cYellow,Lucida Console
else
Gui,1:Font,s8 cYellow,Lucida Console
;=============================================================
;------------------------------------------------------------
x:=(wa*1)/xx,y:=(ha*1)/xx, w:=(wa*18)/xx,h:=(ha*8)/xx
Gui, Add, Edit, x%x% y%y% w%w% h%h% vE1 readonly ,%alldrives% ;- show All_Drives
;------------------------------------------------------------
x:=(wa*20)/xx,y:=(ha*1)/xx, w:=(wa*40)/xx,h:=(ha*10)/xx
Gui, Add, Edit, x%x% y%y% w%w% h%h% vE2 ,%alldest%
;------------------------------------------------------------
x:=(wa*61)/xx,y:=(ha*1)/xx, w:=(wa*7)/xx,h:=(ha*2.3)/xx
Gui, Add, Button, x%x% y%y% w%w% h%h% vRunx gRunCopy,RUN-COPY ;- RUN-ROBOCOPY
;------------------------------------------------------------
x:=(wa*61)/xx,y:=(ha*4.1)/xx,w:=(wa*7)/xx,h:=(ha*2.3)/xx
Gui, add, Edit, x%x% y%y% w%w% h%h% vED3 readonly, ;- message running /ENDED
;------------------------------------------------------------
;x:=(wa*61)/xx,y:=(ha*7)/xx,w:=(wa*5)/xx,h:=(ha*2.3)/xx
;Gui,add,button, x%x% y%y% w%w% h%h% gPrintx, PRINT ;- PRINT
;------------------------------------------------------------
;x:=(wa*67)/xx,y:=(ha*7)/xx,w:=(wa*5)/xx,h:=(ha*2.3)/xx
;Gui,add,button, x%x% y%y% w%w% h%h% gPrintNew, PRINT_NEW ;- PRINT NEW
;------------------------------------------------------------
x:=(wa*1)/xx,y:=(ha*12)/xx, w:=(wa*72)/xx,h:=(ha*10)/xx
Gui, Add, Edit, x%x% y%y% w%w% h%h% vED0 readonly ;- which folder is already copied
;------------------------------------------------------------
x:=(wa*1)/xx,y:=(ha*22.5)/xx,w:=(wa*72)/xx,h:=(ha*70)/xx
Gui, Add, Edit, x%x% y%y% w%w% h%h% vED1 readonly +0x0400 ;- here the output
;------------------------------------------------------------
Gui,add,text,x0 y0 w0 h0 vTextdummy
x:=(wa*.1)/xx,y:=(ha*.1)/xx,w:=(wa*75)/xx,h:=(ha*95)/xx
Gui, Show,x%x% y%y% w%w% h%h%,%name1%
;------------------------------------------------------------
GuiControl,1: Focus,textdummy
return
;-------------------------
Guiclose:
Exitapp
esc::exitapp
;-------------------------
;==========================================================
RUNCOPY:
;- UMLAUT and chinese characters OK
Gui,1:submit,nohide
;---------------------------
;- beelink must have at least DRIVE >D
if ((vt>2) and (type1="Removable" or type1="Fixed")) ;- if more then 2 drives & lastDrive is removable/ or fixed ( maybe USB-stick )
{
msgbox, 262436,COPY-%seclast% to %last% ,%alldrives%`n-------------`nWant you COPY =`n%alldest% ?
IfMsgBox,No
return
e:=""
enew:=""
e2:=""
Guicontrol,1:,ED0
Guicontrol,1:,ED1
Guicontrol,1:,ED3,running...
;--------- for TEST robocopy logfile : --------
logfile2 =%fd1%\%a_now%_Robocopy_Log.txt
excludex2=%logfile2%
;----------------------------------------------
;-----------
loop,%total%
{
guicontrolget,ed0
src:=% source%a_index%
dst:=% dest%a_index%
e2:=ed0 . "`n" . src . ">>>" . dst
Guicontrol,1:,ED0,%e2%
sleep,100
GuiControl,1: Focus,ED0
send,^{end}
sleep,100
;---------------------
;cmdx=chcp 65001&robocopy "%src%" "%dst%" /XO /E /TEE /NP /UNICODE /UNILOG+:%logfile2% /XD %excludex2%
cmdx=chcp 65001&robocopy "%src%" "%dst%" /XO /E /TEE /NP /UNICODE /FP /TS
;----------------------
ed2a:="cmd /c " . cmdx
xxc:=cmdret(ED2a,,CPX)
sleep,400
e .="`r`n=========================== START ===================================`r`n" . cmdx . " =`r`n-------------------------------`r`n" . xxc . "`r`n================================ ENDXX ================================`r`n"
sleep,100
Guicontrol,1:,ED1,%e%
sleep,100
GuiControl,1: Focus,ED1
send,^{end}
}
Guicontrol,1:,ED3,ENDED
gosub,printx
sleep,1000
gosub,printnew
}
return
;===================================================================
;-------------------------
printnew:
f11=%fd1%\%a_now%_Robocopy_New.txt
Gui,1:submit,nohide
i=0
z=0
if e<>
{
Loop,parse,e,`n,`r
{
x:=a_loopfield
if x=
continue
i++
;-----------------------------------------------------
if x contains Gestartet
{
enew .= "================================`r`n"
z=1
I=0
}
if (z=1)
{
enew .= x . "`r`n"
if (i=2)
{
z=0
enew .= "--------------------------`r`n"
}
}
;------------------------------------------------------
if x contains Insgesamt
{
enew .= "--------------------------`r`n"
K=1
}
if (K=1)
{
enew .= x . "`r`n"
if x contains ENDXX
K=0
}
;----------------------------------------------------
stringmid,xx,x,1,29
if (xx ~= "Neuer|Neue Datei|Neues Verz")
enew .= x . "`r`n"
}
xxa:=" Skipped"
xxb:=" No match"
stringreplace,enew,enew,Übersprungen ,%xxa%,all
stringreplace,enew,enew,Keine Übereinstimmung ,%xxb%,all
if enew<>
{
fileappend,%enew%,%f11%,utf-8
try
run,%f11%
enew:=""
}
else
msgbox, 262208,COPY-NEW ,File not created because not found text=`nNeuer|Neue Datei|Neues Verz
}
return
;---------------------------
/*
================================
Gestartet: Donnerstag, 20. Mai 2021 11:49:48
Quelle : D:\M_YVONNE\
Ziel : F:\_BEELINK\M_YVONNE\
--------------------------
Neue Datei 7468 2021/03/07 15:13:00 D:\M_YVONNE\多线程系统代理下载tube1080p视频_20210307161303.ahk
--------------------------
Insgesamt Kopiert Skipped No match FEHLER Extras
Verzeich.: 109 0 109 0 0 39
Dateien: 1457 1 1456 0 0 117
Bytes: 4.443 g 7.2 k 4.443 g 0 0 1020.71 m
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Geschwindigkeit: 240903 Bytes/Sek.
Geschwindigkeit: 13.784 Megabytes/Min.
Beendet: Donnerstag, 20. Mai 2021 11:49:49
================================ ENDXX ================================
================================
Gestartet: Donnerstag, 20. Mai 2021 11:49:51
Quelle : C:\users\garry\desktop\
Ziel : F:\_BEELINK\DESKTOP\
--------------------------
Neuer 12422 2021/05/20 09:49:18 C:\users\garry\desktop\FAV_TEST\ROBOCOPY\Robocopy_TEST_09.ahk
Neue Datei 81895 2021/05/20 09:46:51 C:\users\garry\desktop\ROBOCOPY_LOG\20210520114651_Robocopy_Log_cmdret.txt
Neue Datei 1819 2021/05/20 09:46:52 C:\users\garry\desktop\ROBOCOPY_LOG\20210520114652_Robocopy_New.txt
--------------------------
Insgesamt Kopiert Skipped No match FEHLER Extras
Verzeich.: 260 0 260 0 0 52
Dateien: 3119 3 3116 0 0 336
Bytes: 996.06 m 93.8 k 995.97 m 0 0 2.128 g
Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00
Geschwindigkeit: 3101161 Bytes/Sek.
Geschwindigkeit: 177.449 Megabytes/Min.
Beendet: Donnerstag, 20. Mai 2021 11:49:52
================================ ENDXX ================================
*/
;--------------------------
printx:
Gui,1:submit,nohide
logfile1 =%fd1%\%a_now%_Robocopy_Log_cmdret.txt
if e<>
{
e:=Trim(RegExReplace(e, "`am)^(?!.*[[:alnum:]]).*\R+"), "`r`n")
fileappend,%e%,%logfile1%,UTF-8
try
run,%logfile1%
;e:=""
}
return
;==========================
;--------------------------------------------------------------------------------------------------------
drivegetshow:
i=0
alldrives:=""
DriveGet, A, List,
StringSplit,D, A,
loop,%d0%
{
DRV:= % d%a_index% . ":\"
i++
DriveGet , type1 , type , %DRV% ;- removable / fixed
DriveGet , cap1 , capacity , %DRV%
DrivespaceFree , free1 , %DRV%
DriveGet , fs1 , fs , %DRV% ;- FAT
DriveGet , label1 , label , %DRV% ;- volume label >\\server1
DriveGet , serial1 , serial , %DRV% ;- volume serial number
DriveGet , status1 , status , %DRV%
alldrives .= drv . " " . type1 . " FREE=" . free1 . "-MB`n"
;msgbox, 262208,Drive-Info_%i% ,%DRV% %type1% %label1% %fs1% %cap1%-MB %free1%-MB %status1%
}
stringtrimright,alldrives,alldrives,1
VT:=D0 ;- totaldrives
VL:=(D0-1) ;- totaldrives-1
last = %drv%
if (VT>2)
{
loop,%vl%
seclast := % d%a_index% . ":\"
Guicontrol,1:,ED1,%alldrives%
;msgbox, 262208,Info ,Alldrives=`n%alldrives%
}
else
{
msgbox, 262208,ERROR-SAVE ,You need more than 2 drives for robocopy (computer BEELINK)`n`nAlldrives=`n%alldrives%
exitapp
}
return
;---------------------------------------------------------------------------------------------
;================= function from user teadrinker ========================================
;- https://www.autohotkey.com/boards/viewtopic.php?p=369467#p369467
CmdRet(sCmd, callBackFuncObj := "", encoding := "CP0")
{
static HANDLE_FLAG_INHERIT := 0x00000001, flags := HANDLE_FLAG_INHERIT
, STARTF_USESTDHANDLES := 0x100, CREATE_NO_WINDOW := 0x08000000
hPipeRead:=""
hPipeWrite:=""
sOutput:=""
DllCall("CreatePipe", "PtrP", hPipeRead, "PtrP", hPipeWrite, "Ptr", 0, "UInt", 0)
DllCall("SetHandleInformation", "Ptr", hPipeWrite, "UInt", flags, "UInt", HANDLE_FLAG_INHERIT)
VarSetCapacity(STARTUPINFO , siSize := A_PtrSize*4 + 4*8 + A_PtrSize*5, 0)
NumPut(siSize , STARTUPINFO)
NumPut(STARTF_USESTDHANDLES, STARTUPINFO, A_PtrSize*4 + 4*7)
NumPut(hPipeWrite , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*3)
NumPut(hPipeWrite , STARTUPINFO, A_PtrSize*4 + 4*8 + A_PtrSize*4)
VarSetCapacity(PROCESS_INFORMATION, A_PtrSize*2 + 4*2, 0)
if !DllCall("CreateProcess", "Ptr", 0, "Str", sCmd, "Ptr", 0, "Ptr", 0, "UInt", true, "UInt", CREATE_NO_WINDOW
, "Ptr", 0, "Ptr", 0, "Ptr", &STARTUPINFO, "Ptr", &PROCESS_INFORMATION)
{
DllCall("CloseHandle", "Ptr", hPipeRead)
DllCall("CloseHandle", "Ptr", hPipeWrite)
throw Exception("CreateProcess is failed")
}
DllCall("CloseHandle", "Ptr", hPipeWrite)
VarSetCapacity(sTemp, 4096), nSize := 0
while DllCall("ReadFile", "Ptr", hPipeRead, "Ptr", &sTemp, "UInt", 4096, "UIntP", nSize, "UInt", 0) {
sOutput .= stdOut := StrGet(&sTemp, nSize, encoding)
;sOutput .= stdOut := StrGet(&sTemp, nSize)
;sOutput .= stdOut := StrGet(&sTemp, nSize, CPX)
( callBackFuncObj && callBackFuncObj.Call(stdOut) )
}
DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION))
DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION, A_PtrSize))
DllCall("CloseHandle", "Ptr", hPipeRead)
Return sOutput
}
;================= END SCRIPT ========================================================================
;===================== NOTICE ========================================================================
/*
;- https://www.autohotkey.com/boards/viewtopic.php?f=9&t=90409
;- https://www.autohotkey.com/boards/viewtopic.php?f=10&t=71336
;- https://www.wintotal.de/download/yarcgui/
;- https://www.tecchannel.de/a/robocopy-daten-schnell-und-einfach-unter-windows-sichern,2033515
*/
;=====================================================================================================
Re: Backup Skript - Fragen....
EDIT 20210520 : erstellt 2 logfiles : alles + nur Neue / geänderte
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Multithread Systemlast - SSD - HDD
@jNizM
Es ist einfach nicht gesund für herkömmliche Festplatten, eine sehr starke Systemlast zu verursachen.
Bei SSD´s allerdings kann mindestens /MT: 8 Verwendung finden.
Weiterhin sollte geprüft werden, ob die Systemlast den normalen Arbeitsablauf behindert.
Nach meinen Tests kann mit /MT: 2 auch an älteren Rechnern nicht viel schief gehen.
Vielen Dank für die Hinweise, allerdings sollte man immer bedenken, mit welcher Art von Festplatten man arbeitet.Befehl /MT:[:n] (Erstellt multithreadkopien mit n Threads. n muss eine ganze Zahl zwischen 1 und 128 sein.)
Wenn es ein handelsüblicher Rechner mit (i5 oder höher) ist und es viele kleinere Dateien sind, würde ich /MT:4 oder /MT:8 verwenden
Bei einem PC mit i7 oder höher oder sogar einem Server gerne auch /MT:16
Es ist einfach nicht gesund für herkömmliche Festplatten, eine sehr starke Systemlast zu verursachen.
Bei SSD´s allerdings kann mindestens /MT: 8 Verwendung finden.
Weiterhin sollte geprüft werden, ob die Systemlast den normalen Arbeitsablauf behindert.
Nach meinen Tests kann mit /MT: 2 auch an älteren Rechnern nicht viel schief gehen.
Greetings Best-Code-in-Use
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
@All
ich bräuchte bitte noch einmal etwas Hilfe...
Wie kann ich denn mehrere Ordner ausschließen (Im Zielverzeichnis)?
Der Schalter lautet: /XD die Syntax in Robocopy ist auch klar, aber im Skript will es sich mir nicht erschließen...
Die Verzeichnisse Logfiles und Logfiles_Kopie sollen ausgeschlossen werden, aber ich bekomme es nicht zum laufen.
Es besteht offenbar ein Syntax Fehler.
Nur der Ordner Logfiles wird verschont, hat Jemand eine Idee für mich?
Zur Syntaxerklärung für Robocopy ist hier ein sehr guter Artikel verfasst.
https://pureinfotech.com/exclude-files-folders-robocopy-windows-10/
ich bräuchte bitte noch einmal etwas Hilfe...
Wie kann ich denn mehrere Ordner ausschließen (Im Zielverzeichnis)?
Der Schalter lautet: /XD die Syntax in Robocopy ist auch klar, aber im Skript will es sich mir nicht erschließen...
Code: Select all
Kopierbefehl_A := A_WinDir . "\System32\Robocopy.exe """ . Quelle_001 . """ """ . Ziel_A . """ /E /PURGE /MIR /MT:2 /R:5 /W:10 /XF *.logfile /XD """ . Logfiles . """ """ . Logfiles_Kopie . """ /UNICODE /UNILOG:""" . Logfiles . "Backup-A.logfile"""
Es besteht offenbar ein Syntax Fehler.
Nur der Ordner Logfiles wird verschont, hat Jemand eine Idee für mich?
Zur Syntaxerklärung für Robocopy ist hier ein sehr guter Artikel verfasst.
https://pureinfotech.com/exclude-files-folders-robocopy-windows-10/
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
Moin,
was steht denn in den Variablen Logfiles und Logfiles_Kopie?
was steht denn in den Variablen Logfiles und Logfiles_Kopie?
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
So, jetzt ist es schon fast perfekt...
(Natürlich fehlt jetzt noch die Abfrage von Laufwerken, etc.)
Allerdings besteht noch die Ordnerproblematik, der 2. Ordner (Logfiles_Kopie) wird immer noch gelöscht!
(Natürlich fehlt jetzt noch die Abfrage von Laufwerken, etc.)
Allerdings besteht noch die Ordnerproblematik, der 2. Ordner (Logfiles_Kopie) wird immer noch gelöscht!
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!
#Warn
; The most important switches in this command are the /XD which allows you to exclude folders, and /XF that you can use to exclude files. The other options are optional, but you should use these options that you should use in any standard copy process using Robocopy.
; --------------------------------------------------------------------------------------------------------------------
; Datenerstellung - LogFile - Zeitstempel
FormatTime, Datenerstellung_A, , 'Backup-A'---yyyy--MM--dd---HH-mm-ss'.log' ; Aufruf des Pfades mit "%Datenerstellung_A%"
FormatTime, Datenerstellung_B, , 'Backup-B'---yyyy--MM--dd---HH-mm-ss'.log' ; Aufruf des Pfades mit "%Datenerstellung_B%"
; --------------------------------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------------------------------
Quelle_001 := "C:\Users\" A_UserName "\Scoutsystems"
Ziel_A := "D:\test"
Ziel_B := "D:\test"
Logfiles := "D:\test\001--Logfiles\"
Logfiles_Kopie := "D:\test\002--Logfiles_A_oder_B\"
; --------------------------------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------------------------------
Kopierbefehl_A = %A_WinDir%\System32\Robocopy.exe "%Quelle_001%" "%Ziel_A%" /E /PURGE /MIR /MT:2 /R:5 /W:10 /XF *.log /XD "%Logfiles%" "%Logfiles_Kopie%" /UNICODE /UNILOG:"%Logfiles%%Datenerstellung_A%"
; --------------------------------------------------------------------------------------------------------------------
Kopierbefehl_B = %A_WinDir%\System32\Robocopy.exe "%Quelle_001%" "%Ziel_B%" /E /PURGE /MIR /MT:2 /R:5 /W:10 /XF *.log /XD "%Logfiles%" "%Logfiles_Kopie%" /UNICODE /UNILOG:"%Logfiles%%Datenerstellung_B%"
; --------------------------------------------------------------------------------------------------------------------
runwait, %comspec% /c %Kopierbefehl_A%, , Hide
; runwait, %comspec% /c %Kopierbefehl_B%, , Hide
; MsgBox, 262144, = Immer im Vordergrund (WS_EX_TOPMOST-Style) (Wie System Modal, aber ohne Icon in der Titelleiste)
MsgBox, 262144, >> Spiegelung erfolgreich, ###########################################`n###########################################`n`n`nDer Faktura Kopiervorgang ist abgeschlossen!`n`n`n###########################################`n###########################################
ExitApp
Greetings Best-Code-in-Use
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
@just me
Ups, Sorry, ich hatte Deinen Post nicht gesehen=
Ups, Sorry, ich hatte Deinen Post nicht gesehen=
Code: Select all
Logfiles := "D:\test\001--Logfiles\"
Logfiles_Kopie := "D:\test\002--Logfiles_A_oder_B\"
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
Nach der von Dir zitierten Beschreibung denke ich, dass sich die unter /XF bzw. /XD gelisteten Dateien/Ordner im Quellverzeichnis befinden sollten.
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
Nein, in dem Fall sollen die Logs in das Zielverzeichnis.
Es geht darum dass man sich ansehen kann, von wann der aktuelle Sicherungsstand ist.
Im Fall der Fälle...
Prinzipiell funktioniert es ja auch, allerdings wird eben der 2. Ordner wegrasiert...
Es geht darum dass man sich ansehen kann, von wann der aktuelle Sicherungsstand ist.
Im Fall der Fälle...
Prinzipiell funktioniert es ja auch, allerdings wird eben der 2. Ordner wegrasiert...
Greetings Best-Code-in-Use
Re: Backup Skript - Fragen....
@Best-Code-in-Use - ich habe in einem solchen Fall die backup-folder entsprechend "datum"isiert benamt und mit einer (auf anderen PC's nicht angezeigten) system-dateiendung versehen. Die waren damit sortiert, und es fällt (dem Berechtigten) sofort auf wenn in der Reihe eine "Lücke" klafft.
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
Re: Backup Skript - Fragen....
@Bobo
es geht ja hier nur darum, das man sehen kann, welche Sicherungen wann erfolgt sind.
Das Logfile kann dann auch per Mail verschickt werden, daher 2 Ordner, danach wird es in den 2. Ordner verschoben.
Es läuft ja noch täglich ein "echtes" Backup des Systems und aller Verzeichnisse, dieses wird, bei den Meisten, auf D:/ abgelegt.
Und von dort dann halt auf externe Laufwerke gespiegelt, die wöchentlich getauscht werden.
Dadurch würde, schlimmstenfalls, die Arbeit von einer Woche flöten gehen.
(Verschlüsselung durch Erpresserviren, etc.)
es geht ja hier nur darum, das man sehen kann, welche Sicherungen wann erfolgt sind.
Das Logfile kann dann auch per Mail verschickt werden, daher 2 Ordner, danach wird es in den 2. Ordner verschoben.
Es läuft ja noch täglich ein "echtes" Backup des Systems und aller Verzeichnisse, dieses wird, bei den Meisten, auf D:/ abgelegt.
Und von dort dann halt auf externe Laufwerke gespiegelt, die wöchentlich getauscht werden.
Dadurch würde, schlimmstenfalls, die Arbeit von einer Woche flöten gehen.
(Verschlüsselung durch Erpresserviren, etc.)
Greetings Best-Code-in-Use
-
- Posts: 184
- Joined: 01 Dec 2015, 05:13
- Location: Germany
So - Backup-Skript optimiert...
Für Alle die es gebrauchen können, hier nun das gesamte Batch Skript zum Kopieren der Festplatte (NICHT= C:\) auf eine Sicherungsplatte.
Der Trick von Laufwerksbuchstabe A und B ist das diese vom System nicht mehr vergeben werden.
Daher können diese bei der Formatierung / Einrichtung der Sicherungsplatten genutzt werden und es kommt nicht zum Konflikt mit anderen USB-Geräten!
Mein besonderer Dank geht an just me ohne dessen geduldige Hilfe es so nicht möglich gewesen wäre!
@BoBo
Ja, ich habe Deine Überlegung zum Logfile hier ebenfalls mit eingearbeitet.
Vielen Dank für die Anregung.
Der Trick von Laufwerksbuchstabe A und B ist das diese vom System nicht mehr vergeben werden.
Daher können diese bei der Formatierung / Einrichtung der Sicherungsplatten genutzt werden und es kommt nicht zum Konflikt mit anderen USB-Geräten!
Mein besonderer Dank geht an just me ohne dessen geduldige Hilfe es so nicht möglich gewesen wäre!
@BoBo
Ja, ich habe Deine Überlegung zum Logfile hier ebenfalls mit eingearbeitet.
Vielen Dank für die Anregung.
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!
; #Warn
; Mit dem Schalter /XD koennen Ordner ausgeschlossen werden
; Mit dem Schalter /XF koennen Dateien ausgeschlossen werden
; /XD Verzeichnissausschluesse duerfen keinen Backslash am Schluss haben=
; Korrekt= /XD "\System Volume Information" --- FALSCH= /XD "\System Volume Information\"
; --------------------------------------------------------------------------------------------------------------------
; Datenerstellung - LogFile - Zeitstempel
; FormatTime, Datenerstellung_A, , 'Backup-A'---yyyy--MM--dd---HH-mm-ss'.log' ; Aufruf des Pfades mit "%Datenerstellung_A%"
FormatTime, Datenerstellung_A, , yyyy--MM--dd---HH-mm-ss---'Backup-A.log' ; Aufruf des Pfades mit "%Datenerstellung_A%"
FormatTime, Datenerstellung_B, , yyyy--MM--dd---HH-mm-ss---'Backup-B.log' ; Aufruf des Pfades mit "%Datenerstellung_B%"
; --------------------------------------------------------------------------------------------------------------------
Quelle_001 := "D:\"
Ziel_A := "A:\"
Ziel_B := "B:\"
; ---------------------------------
Logfiles := "D:\Z-001--Logfiles"
Logfiles_Kopie := "D:\Z-002--Logfiles_A_oder_B"
; ---------------------------------
NoCopy_001 := "\System Volume Information"
NoCopy_002 := "\$RECYCLE.BIN"
; ---------------------------------
LogVZ_A1 := "A:\Z-001--Logfiles"
LogVZ_A2 := "A:\Z-002--Logfiles_A_oder_B"
; ---------------------------------
LogVZ_B1 := "B:\Z-001--Logfiles"
LogVZ_B2 := "B:\Z-002--Logfiles_A_oder_B"
; ---------------------------------
Pruefdatei_A := "A:\"
Pruefdatei_B := "B:\"
; ---------------------------------
RemoveDrive := "RemoveDrive64.exe"
; ---------------------------------
Kopierbefehl_A = %A_WinDir%\System32\Robocopy.exe "%Quelle_001%" "%Ziel_A%" /E /PURGE /MIR /MT:2 /R:5 /W:10 /XF *.log /XD "%NoCopy_001%" "%NoCopy_002%" "%Logfiles%" "%Logfiles_Kopie%" "%LogVZ_A1%" "%LogVZ_A2%" "%LogVZ_B1%" "%LogVZ_B2%" /UNICODE /UNILOG:"%Logfiles%\%Datenerstellung_A%"
; ---------------------------------
Kopierbefehl_B = %A_WinDir%\System32\Robocopy.exe "%Quelle_001%" "%Ziel_B%" /E /PURGE /MIR /MT:2 /R:5 /W:10 /XF *.log /XD "%NoCopy_001%" "%NoCopy_002%" "%Logfiles%" "%Logfiles_Kopie%" "%LogVZ_A1%" "%LogVZ_A2%" "%LogVZ_B1%" "%LogVZ_B2%" /UNICODE /UNILOG:"%Logfiles%\%Datenerstellung_B%"
; --------------------------------------------------------------------------------------------------------------------
loop ; Schleife prueft welches Laufwerk vorhanden ist
{
If FileExist(Pruefdatei_A)
{
runwait, %comspec% /c %Kopierbefehl_A%, , Hide
FileCopy, %Logfiles%\*.log, %LogVZ_A1%\*.log ; Die Logdateien werden kopiert auf das Backup-Laufwerk
RunWait, %RemoveDrive% a: -d -e -l ,,hide - Das Auswerfen des Laufwerkes ist nicht immer sinnvoll!!!
Break ; <<<<< Fertig, die Schleife kann verlassen werden.
}
Else If FileExist(Pruefdatei_B) ; sonst wenn das Laufwerk B angeschlossen ist
{
runwait, %comspec% /c %Kopierbefehl_B%, , Hide
FileCopy, %Logfiles%\*.log, %LogVZ_B1%\*.log ; Die Logdateien werden kopiert auf das Backup-Laufwerk
RunWait, %RemoveDrive% b: -d -e -l ,,hide - Das Auswerfen des Laufwerkes ist nicht immer sinnvoll!!!
Break ; <<<<< Fertig, die Schleife kann verlassen werden.
}
Else ; falls kein externes Laufwerk angeschlossen ist
{
MsgBox, 4, Externes Laufwerk A oder B nicht gefunden!!, ###################################################`n###################################################`n`n`nDas externe Laufwerk A oder B wurde nicht gefunden.`nBitte eine externe Sicherungs-Festplatte anschließen!!!`n`nNach dem Anschließen JA drücken.`n`nFortfahren???`n(Drücken Sie JA oder NEIN)`n`n`n###################################################`n###################################################
IfMsgBox No
{
ExitApp ; es wurde "Nein" gedrueckt, also beende das Script
}
; Bei JA springt das Script automatisch zum Anfang der Schleife (Loop)
}
} ; Ende der Laufwerkspruefung und Spiegelung (per Loop)
FileMove, %Logfiles%\*.log, %Logfiles_Kopie%\*.log ; Verschiebt die Datei, ohne sie umzubenennen
; MsgBox, 262144, = Immer im Vordergrund ohne Icon in der Titelleiste!
MsgBox, 262144, >> Spiegelung erfolgreich, ###########################################`n###########################################`n`n`nDer Kopiervorgang ist abgeschlossen!`n`n`n###########################################`n###########################################
ExitApp
Greetings Best-Code-in-Use
Who is online
Users browsing this forum: No registered users and 33 guests