Maturità 2007: soluzione alla prova di informatica

Di Barbara Leone.

Alle ore 12:04 del 21 giugno 2007 un utente del forum ha inviato la soluzione alla seconda prova di informatica durante l'esame di maturità 2007

21 giugno 2007, ore 12:04. Un utente ci invia sul forum la soluzione alla seconda prova della maturità per informatica: il codice della privacy prevede una serie di adempimenti per i soggetti pubblici e privati che trattano dati sensibili con supporti informatici. il candidato illustri le possibili procedure per garantire l'accesso ai documenti soltanto a soggetti autorizzati, simulare periodicamente la perdita dei dati e il recupero degli stessi dalle copie di backup, modificare periodicamente i paramentri di accesso ai documenti protetti. Gestire i backup è un operazione tanto utile quanto lunga e noiosa. Effettuare copie di sicurezza dei nostri contenuti online è certamente una buona abitudine, tuttavia parlare di backup manuali diventa improponibile quando la mole di dati da copiare diventa piuttosto corposa. In questa situazione è utile dotarsi di qualche sistema automatizzato per effettuare le copie dei nostri preziosi file. In questo articolo vedremo appunto, come creare un piccolo script per effettuare il backup completo dei tutti i file e cartelle del nostro sito web!

Per farlo faremo ricorso all'oggetto FileSystemObject ed in particolar modo al metodo CopyFile.

Vediamo il codice del nostro nuovo file backup.asp che andremo a salvare nella root del nostro sito web. Function backup()
' Dimensiono le variabili
Dim bckdir, fso, folder, subfolders, subfolder, files, file
' Creo l'oggetto FileSystem
Set fso = CreateObject("Scripting.FileSystemObject")

' Imposto e creo la cartella di backup
bckdir = "backup_" & Replace(FormatDateTime(Date(),2),"/","-")
If NOT fso.FolderExists(Server.MapPath(bckdir)) Then
fso.CreateFolder(Server.MapPath(bckdir))
End If

' Attivo la cartella corrente (la Root del nostro sito)
Set folder = fso.getfolder(Server.MapPath("/"))

' Recupero le sottocartelle
Set subfolders = folder.Subfolders
' Ciclo le sotto-cartelle
For each subfolder in subfolders
' Evito di copiare la carella di backup
If subfolder.name <> bckdir Then
' Copio le sotto-cartelle nella cartella di backup
fso.CopyFolder subfolder, Server.MapPath(bckdir & "/" & subfolder.name)
End If
Next

' Recupero i file contenuti direttamente nella Root
Set files = folder.files
' Ciclo i files
For Each file in files
' Copio nella cartella di backup
fso.CopyFile file.path, Server.MapPath(bckdir & "/" & file.name)
Next

' Stampo un messaggio di conferma
Response.Write "Backup eseguito con successo!"
End Function

' Richiamo la funzione di backup
Call backup()

Possiamo anche studiare una variante particolare per effettuare il backup solo di alcuni file particolarmente importanti, come ad esempio i database. Vediamo una semplice funzione per fare il backup (solo) dei database Access: Function mdb_backup(dir)
' Dimensiono le variabili
Dim fso, folder, files, File
' Creo l'oggetto FileSystem
Set fso = CreateObject("Scripting.FileSystemObject")

' Imposto e creo la cartella di backup per i file mdb
bckdir = "backup_mdb_" & Replace(FormatDateTime(Date(),2),"/","-")
If NOT fso.FolderExists(Server.MapPath(bckdir)) Then
fso.CreateFolder(Server.MapPath(bckdir))
End If

' Attivo la cartella
Set folder = fso.getfolder(Server.MapPath(dir))
' Recupero i files contenuti nella cartella
Set files = folder.files
' Ciclo i files
For Each file in files
' Se il file ha estensione mdb procedo alla copia nella cartella di backup
If fso.GetExtensionName(file.path) = "mdb" then
fso.CopyFile file.path, Server.MapPath(bckdir & "/" & file.name)
End If
Next

' Stampo un messaggio di conferma
Response.Write "Backup eseguito con successo!"
End Function

' Lancio la funzione specificando la cartella che contiene i db Access
Call mdb_backup("/database/mdb").