Alle backprogrammer benytter filernes 'arkivbit', som aktiveres når en fil bliver oprettet eller ændret. Backupprogrammet kan finde filer med aktiv arkivbit - kopiere filen - og deaktivere arkivbitten. Følgende backupscript benytter denne teknik til at finde ændrede filer i de specificerede foldere. Koden her indeholder eksempler på angivelsen af foldere og filer som skal kopieres - og hvor der skal kopieres til. Sti og navn på kopierede filer udskrives på skærmen og i en logfil.
Eksempler på specifikationer i koden::
BackUp destination folder - dvs hvor filerne skal kopieres hen:
| Bfolder = "D:\back\" Bfolder = "\\server\backup" |
Stibetegnelsen kan valgfrit afsluttes med '\'
Folder med indhold som skal kopieres (P = Path):
| P "c:\" P "C:\Programmer\Microsoft Office\Skabeloner\" |
Stibetegnelsen kan valgfrit afsluttes med '\'
Filer som skal kopieres (BF = Back File).
Filerne findes i den folder som sidst er angivet.
Filerne kan evt angives med 'wildcart' (*):
| P "c:\" BF "autoexec.bat" BF "config.sys" P "c:\dokumenter" BF "*.doc" |
Foldere som skal kopieres (BD = Back Directory).
Folderne findes i den folder som sidst er angivet.
| P "C:\WINDOWS\" BD "Foretrukne" BD "Menuen Start" BD "SendTo" |
Hele programmet:
Const ForWriting = 2
count = 0
sti = ""
'---------------------
' Log File (back.txt):
'---------------------
Set fs = CreateObject("Scripting.FileSystemObject")
set tf = fs.OpenTextFile("D:\back.txt", ForWriting, True)
prnt date & " " & time
'================================================================================
' P : Path
' BF : Backup File
' Filenames may use wildcards - but only at end of filename and/or extension
' Ex: OK: dat*.n*, *.*
' not OK: *dag.*x
' BD : Backup Directory
'================================================================================
' BackUp destination folder: '-------------------------
Bfolder = "\\M\D\BackC-C"
'-------------------------
P "c:\"
BF "autoexec.bat"
BF "config.sys"
BD "BAT"
BD "Download"
P "C:\inetpub\"
BD "wwwroot"
P "C:\Programmer\Microsoft Office\Skabeloner\"
BF "normal.dot"
P "C:\WINDOWS\"
BD "Foretrukne"
BD "Menuen Start"
BD "SendTo"
P "C:\Windows\Application Data\"
BD "Identities"
P "C:\WINDOWS\Application Data\Microsoft\"
BD "Outlook"
'-------------------------
Bfolder = "\\M\D\BackC-D"
'-------------------------
P "D:\"
BD "Billeder"
BD "Dokumenter"
BD "Download"
'============================================================
prnt FileCount
tf.Close
Set tf = nothing
Set fs = nothing
MsgBox FileCount
'============ END =============== SUBROUTINES :
'--------------------------------
' P : Set Path
'--------------------------------
Sub P(path)
sti = path
if right(sti, 1) <> "\" then sti = sti + "\"
prnt ""
prnt "===" & sti
End Sub
'--------------------------------
' BF : Back File
'--------------------------------
Sub BF(navn)
if instr(navn,"*") then
s1 = ""
s2 = ""
pp = instr(navn,".")
f1 = left(navn,pp-1)
f2 = mid(navn,pp+1)
p1 = instr(f1,"*")
p2 = instr(f2,"*")
if p1 then s1 = left(f1, p1-1)
if p2 then s2 = left(f2, p2-1)
BackWild
else
set f = fs.GetFile(sti & navn)
backFile f
end if
End Sub
'--------------------------------
' BD : Back Directory
'--------------------------------
Sub BD(navn)
f = sti & navn
prnt " \" & navn
BackFolder f
End Sub
'--------------------------------
' BackFile
'--------------------------------
Sub backFile(f)
if f.Attributes and 32 then
dfn = Bfolder & mid(f.ParentFolder, 3)
if right(dfn, 1) <> "\" then dfn = dfn + "\"
if not fs.folderexists(dfn) then FolderCreate dfn
fs.Copyfile f, dfn & f.name
f.Attributes = f.Attributes - 32
prnt "* " & f
count = count + 1
end if
End Sub
'-------------------------------
' BackWild
'-------------------------------
Sub backWild()
Set f = fs.GetFolder(sti)
set fc = f.files
for each fil in fc
ext = mid(fil.name,instr(fil.name,".")+1)
w = (left(fil.name,len(s1)) = s1 AND left(ext,len(s2)) = s2)
if w then backFile fil
next
End Sub
'-------------------------------
' backFolder
'-------------------------------
Sub backFolder(fn)
Set f = fs.GetFolder(fn)
set fc = f.files
for each fil in fc
backFile fil
next
Set sf = f.SubFolders
For Each f1 in sf
If Left(f1.name, 4) <> "_vti" then BackFolder f1.path
Next
End Sub
'----------------------------
Sub we(s)
wscript.echo s
End Sub
Sub prnt(s)
we s
tf.Writeline s
End Sub
Function FileCount()
if count = 1 then
FileCount = "1 fil"
else
FileCount = count & " filer"
end if
End Function
Sub FolderCreate(fn)
pfn = fs.GetParentFolderName(fn)
if not fs.folderexists(pfn) then FolderCreate pfn
fs.CreateFolder fn
End Sub
|