La classe NsBackupVersion décrit une version d'un fichier à une date donnée, auquel est attaché un flux de données stocké sur le serveur de sauvegarde.
L'identificateur unique de la version du fichier.
La date d'introduction de la version dans le serveur de sauvegarde, au format UTC.
L'identificateur du fichier parent.
Une variable booléenne indicant si la version actuelle est la dernière (IsUpToDate = true), ou si une version plus récente existe dans la sauvegarde (IsUpToDate = false).
Une variable booléenne indiquant si la version du fichier est chiffrée ou non.
Une variable booléenne indiquant si la version du fichier est compressée ou non.
La date de révocation de la version dans le serveur de sauvegarde, au format UTC (lorsque une version plus récente à remplacé la version actuelle, ou que celle-ci a été supprimée par l'agent client car le fichier n'existait plus sur le poste client).
Une variable booléenne indiquant si la version a été ajoutée au sein d'une sauveagarde ne s'étant pas exécuté jusqu'à son terme.
La taille sur le disque client de la version du fichier.
La taille sur le serveur de sauvegarde de la version du fichier. Elle peut différer de la taille d'origine en fonction des options de chiffrement et de compression choisies.
L'identificateur unique du fichier sur le disque, si le système de fichiers le supporte (c'est le cas de NTFS).
Les attributs Windows de la version du fichier.
La date de création attachée au fichier sauvegardé. Elle peut être au format local ou UTC en fonction du système de fichiers source.
La date de dernière modification attachée au fichier sauvegardé. Elle peut être au format local ou UTC en fonction du système de fichiers source.
La date de dernier accès attachée au fichier sauvegardé. Elle peut être au format local ou UTC en fonction du système de fichiers source.
Charge en mémoire la version de fichier spécifiée par l'identificateur VersionID.
Retourne une variable booléenne indiquant si l'intégrité du fichier a pu être testée et que celui-ci est signalé comme intègre par le système de sauvegarde.
Retourne le résultat du test d'intégrité pour la version courante.
Obtient le chemin de stockage de la version du fichier sur le serveur de sauvegarde.
Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
testedFiles = 0
intgOKCount = 0
intgErrCount = 0
rvkCount = 0
'
' Teste toutes les versions d'un fichier donné
Sub TestAllVersions(connection, path, file)
' On récupère la liste des versions
set versionsOfFile = file.Versions(connection)
' Pour chaque version...
for each version in versionsOfFile
' On incrémente le nombre de fichiers testés
testedFiles = testedFiles + 1
' On teste l'intégrité
if not version.CheckIntegrity(connection) then
intgErrCount = intgErrCount + 1
' Doit-on révoquer le fichier ?
if MsgBox("Echec du controle d'intégrité pour ''" & path & "''. Souhaitez-vous supprimer le fichier du serveur ?",vbCritical + vbYesNo + vbApplicationModal,"Echec du contrôle d'intégrité") = vbYes Then
' Demander au serveur de le faire.
if not file.Revoke(connection) then
MsgBox "Impossible de révoquer le fichier #" & sysutils.Int64ToStr(file.ID)
else
' On incrémente le nombre de fichiers révoqués
rvkCount = rvkCount + 1
end if
' On sort de la fonction car toutes les versions du fichier ont été révoquées
exit Sub
end if
else
' On incrémente le nombre de fichiers marqués comme sains
intgOKCount = intgOKCount + 1
end if
next
End Sub
' Tester le contenu d'un dossier
Sub RecursiveTestDir(connection, path, source, currentfolder)
' Examiner chaque version du fichier
for each file in currentfolder.files
TestAllVersions connection, source.BuildPath(path + file.Name), file
next
' Pour chaque sous-dossier, appeler récursivement la fonction
' afin de les analyser chacun leur tour
for each folder in currentfolder.subfolders
RecursiveTestDir connection, sysutils.IncludeTrailingPathDelimiter(source.ParentPlatform, path + folder.Name), source, folder
next
End Sub
' Tester le contenu d'une sauvegarde
Sub TestBackupContent(connection, backup)
Set sources = backup.Sources(connection)
' Explorer chaque source de backup
for each source in sources
RecursiveTestDir connection, "", source, source.LoadContentWithUI(connection)
next
End Sub
if connection.ConnectToLocalServer then
set server = CreateObject("NsAPI.NsServer")
if server.Load(connection) then ' Charger les infos serveur
set backups = server.AllBackups(connection) ' Récupérer la liste de toutes les sauvegardes
' Demander un nom de sauvegarde
backupName = InputBox("Saisissez le nom de la sauvegarde à tester : ", "Test de l'API UB", "")
if backupName <> "" then ' Un nom valide a t-il été saisi
p = backups.FindByName(backupName) ' Trouver la bonne sauvegarde
if p = -1 then
MsgBox "Impossible de continuer car la sauvegarde n'a pas pu être trouvée."
else
' Tester la sauvegarde
TestBackupContent connection, backups(p)
' Afficher un bilan
MsgBox testedFiles & " fichiers ont été testés." & vbCrLf & intgOKCount & " fichiers ont été détectés cohérents." & vbCrLf & intgErrCount & " fichiers ont été détectés comme erronés." & vbCrLf & rvkCount & " fichiers ont été révoqués."
end if
end if
else
MsgBox "Impossible de charger les informations serveur."
end if
else
MsgBox "Connexion au serveur local impossible."
end if