Situation: Sie haben ein Skript für ein zyklisches Backup, bestehend aus einem vollständigen Basisarchiv und differentiellen Sicherungen, eingerichtet und stellen nun fest, dass immer neue Vollsicherungen anstelle von differentiellen Backups erstellt werden.
Ursache: So etwas kann passieren, wenn die Funktion fileexist
nicht erkennt, dass ein Basisarchiv vorhanden ist. Doch es gibt eine Lösung:
sub_FindLatestImage
. Dieses Image sollte in den Zeilen 780 bis 837 beschrieben sein und auf ENDCALL
enden.\program\
, und geben Sie dann im Terminal den Befehl scripts.exe
ein.Im Ergebnis sollte in einer der ersten Zeilen der Eintrag Base image found zu lesen sein. Jetzt sollte die Erstellung von differentiellen Backups reibungslos funktionieren. Sie können diese Änderungen auch im Basisskript (cyclbckp.psl
in \scripts\
) vornehmen. Sichern Sie das Skript für den Fall, dass Sie das Programm zu einem späteren Zeitpunkt neu installieren müssen.
sub_FindLatestImage: // Read params and initialize variables
SET STRING Dir4 = POPSTR
SET VALUE aDate2 = 0
SET VALUE aTime2 = 0
SET VALUE lDate = 0
SET VALUE lTime = 0
SET STRING F3 = ""
SET STRING aRes4 = ""
// scan images
XFIND
OPTIONS
RESULT = F3
RECURSIVE = FILES FIRST
RECURSIVE LEVEL = 1
START = string(Dir4)
MASK = string(x_ImageDirMask)
SEARCH = WIDE
FILES = OFF
DIRECTORIES = ON
ENDOPTIONS
BEGIN // extract YYYYMMMDD from file-name
PUSHSTR(SUBSTRING(string(F3),0,8))
CALL sub_StrToInt
SET VALUE aDate2 = POPNUM
// extract HHMMSS from file-name
PUSHSTR( SUBSTRING(string(F3),9,6) )
CALL sub_StrToInt
SET VALUE aTime2 = POPNUM
// search for oldest date+time
IF ( (value(aDate2)>value(lDate))
OR( (value(aDate2)==value(lDate))
AND (value(aTime2) >value(lTime))))
THEN
SET VALUE lDate = value(aDate2)
SET VALUE lTime = value(aTime2)
SET STRING aRes4 = string(F3)
ENDIF
ENDXFIND
IF ((value(lDate)+value(lTime))<=0) THEN // check if any valid dir-name was observed
PUSHSTR("")
ENDCALL
ENDIF
SET STRING file_name = string(g_ImageName) // Expected arhive name
PRINT "Expected archive name = " + string(file_name)
PRINT ""
SET STRING Dir4 = string(Dir4) +"/"+ string(aRes4)
SET STRING aRes4 = string(Dir4) +"/"+ string(g_ImageName)
PRINT "Base image path aRes4 = " + string(aRes4)
PRINT ""
SET VALUE file_found = 0
// Verify existence of base archive
XFIND
OPTIONS
RESULT = F3
RECURSIVE = FILES FIRST
RECURSIVE LEVEL = 2
START = string(Dir4)
MASK = string(file_name)
SEARCH = WIDE
FILES = ON
DIRECTORIES = OFF
ENDOPTIONS
BEGIN
PRINT "Base image found"
PRINT ""
SET VALUE file_found = 1
ENDXFIND
IF (value(file_found) == 0) THEN
SET STRING aRes4 = ""
ENDIF
// return image dir-name
PUSHSTR(string(aRes4))
ENDCALL
Anleitungen: Paragon, Backup & Recovery, Festplatten Manager für Windows
Tags: Backup