Dim root_dir
root_dir = "/"
Dim bak_set
Set bak_set = Server.createobject("Scripting.Dictionary")
bak_set.Add "last_bak" , "2006-05-30"
bak_set.Add "file_list" , "data.mdb|
System.mdb"
bak_set.Add "file_path" , "database/|database/"
bak_set.Add "bak_dir" , "backup/"
bak_set.Add "bak_date" , "2006-05-27|2006-05-28|2006-05-29|2006-05-30"
bak_set.Add "
PErfix" , "@"
bak_set.Add "date_out" , "2"
:要备份的文件名、路径,备份在什么地方,备份保留几天,备份文件的文件名前缀,两个经常变化的设置是最后备份日期和备份过的日期的列表。在全部的路径设置中都需要用“/”结束
Function IsoDate(str_date) Dim temp
If IsDate(str_date) Then
temp = Year(str_date)&
amp;"-"& Right("0"&
;month(str_date),2) & "-"& Right("0" & Day(str_date),2)
Else
temp = str_date
End If
IsoDate=temp
End Function
'==================================
' Function: 文件定时备份程序backup files
' Need
VAR: root_dir , bak_set , isodate()
' Need file bak_set.asp
' return : true / false
'==================================
Function bak_start()
'1
Dim perfix
perfix = bak_set("perfix")
Dim files
files = spl
IT(bak_set("file_list"),"|")
Dim paths
paths = split(bak_set("file_path"),"|")
Dim now_date
now_date = isodate(date)
'response.Write(now_date)
Dim sev_root
sev_root = Server.MapPath(root_dir)
Dim bak_root
bak_root = sev_root & "\" & bak_set("bak_dir")
Dim bak_dir
bak_dir = bak_root & "\" & now_date & "\"
'2 create backup
Dim fso
Set fso = Server.createobject("Scripting.FileSystemObject")
If Not fso.FolderExists(bak_root) Then fso.CreateFolder(bak_root)
If Not fso.FolderExists(bak_dir) Then fso.CreateFolder(bak_dir)
'response.Write(bak_dir)
If
ubound(files) > Ubound(paths) Then
bak_start = false
Exit Function
End If
Dim i
'On Error Resume Next
For i = 0 To Ubound(files)
'response.Write(sev_root & "\" & paths(i) & files(i))
If fso.FileExists( sev_root & "\" & paths(i) & files(i) ) And Not fso.FileExists(bak_dir & perfix & files(i)) Then
fso.CopyFile sev_root & "\" & paths(i) & files(i) , bak_dir & perfix & files(i)
End If
Next
'3 Delete out of date backup
Dim date_out
date_out = isodate( date - Abs(bak_set("date_out")) )
'response.Write(date_out)
Dim dates
Dim bak_date
bak_date = ""
dates = split(bak_set("bak_date"),"|")
For i = 0 To Ubound(dates)
If dates(i) < date_out Then
'On Error Resume Next
If fso.FolderExists(bak_root & "\" & dates(i)) Then fso.DeleteFolder bak_root & "\" & dates(i)
Else
bak_date = bak_date & dates(i) & "|"
End If
Next
bak_date = bak_date & now_date
bak_set("bak_date") = bak_date
'4 update settings
Dim f
Set f = fso.OpenTextFile(Server.MapPath("bak_set.asp"),2,true)'2 写
Dim temp ,keys
temp = "<%" &
vbCrlf & _
"Dim root_dir"&vbCrlf & _
"root_dir = """& root_dir &"""" &vbCrlf & _
"Dim bak_set" &vbCrlf & _
"Set bak_set = Server.createobject(""Scripting.Dictionary"")"&vbCrlf
keys = bak_set.Keys
For i = 0 to Ubound(keys)
temp = temp & "bak_set.Add """&keys(i)&""" , """ & bak_set(keys(i)) & """" & vbCrlf
Next
temp = temp & "%" & ">"
f.write temp
f.Close
Set fso = Nothing
Set f = Nothing
bak_start = true
End Function
最后,也是最重要的,那就是安全问题,如果备份的文件能被浏览器打开,那后果可能是很严重的!所以应当谨慎选取备份文件夹,如果服务器允许访问网站的外部目录,那么应当把备份的路径也指定到网站外部,例如:网站根目录解析到了 XXX/htdoc/ 而你对此也有读写权限 xxx/ 那么就可以将备份文件加指定到 xxx/backup/ 这样就比较安全。如果没有这样的权限,那么就必须保证,需要备份的文件本身就是安全的。