class NsBackupSource

La classe NsBackupSource représente un élément source sauvegardé par le serveur de sauvegarde. Une sauvegarde est constitué d'un ensemble d'éléments source traités séquentiellement, qui peuvent être des fichiers ou des dossiers de fichiers.

ID : __int64

L'identificateur unique de l'élément source. Les constantes suivantes peuvent-être utilisées :

  • THROOT_CREATE = -1 : l'objet n'existe pas et doit être créé.

CreationDate : VARIANT readonly

La date de création de l'élément source sur le serveur, au format UTC.

BackupID : __int64

L'identificateur de la sauvegarde (NsBackup) parente.

OrderIndex : long

Un entier représentant le numéro d'ordre de la source dans la liste des sources constituant la sauvegarde. Lors de l'exécution d'une sauvegarde, les sources sont traitées dans l'ordre croissant de leur numéro d'ordre. Si plusieurs sources de sauvegarde possèdent plusieurs numéro d'ordre identiques, l'ordre final de traitement n'est pas défini.

ParentPlatform : enum NsPlatformType readonly

L'identificateur de la plateforme dont sont issus les fichiers contenus par la source, tel qu'il a été paramétré par la sauvegarde parente.

PathName : BSTR

Le chemin d'accès de l'élément source sur le poste client.

RecurseDir : VARIANT_BOOL

Une variable booléenne indiquant si les sous-dossiers doivent-être traités.

SourceType : enum NsSourceType

Le type de l'élément source (fichier ou dossier).

DatesEncoding : enum NsDateEncoding

L'encodage des dates, dépendant du système de fichiers utilisé. Lorsque l'encodage UTC est utilisé (ce qui est le cas pour le système de fichiers NTFS), les dates des fichiers devront être converties au format UTC lors de leur affichage. Vous pouvez utiliser la fonction GetLocalFileDate pour cela.

Options : long

Les options supplémentaires da la source de sauvegarde. Les valeurs suivantes peuvent être combinées :

  • THROOTOPT_MOUNTSHARE = 1 : L'élément source est un volume réseau qui doit être monté par le logiciel.
  • THROOTOPT_DISABLED_FOR_BACKUP = 2 : L'élément source ne sera pas traités lors de l'exécution de la sauvegarde.
  • THROOTOPT_DISABLED_FOR_CDP = 4 : L'élément ne sera pas inclu dans la sauvegarde continue.
  • THROOTOPT_INCLUDE_IN_SNAPSHOT_SET = 16 : L'élément source doit être inclus dans le cliché de données VSS. Cette option devrait toujours être utilisée, sauf si la source est situé sur un disque réseau, sur un volume non NTFS ou sur un poste non équipé au minimum de Windows XP SP2.
  • THROOTOPT_CONTENT_IS_CASE_SENSITIVE = 32 : Le système de fichiers de l'élément source est sensible à la casse. N'utilisez cette option que le si la source pointe sur un système de fichier non-Windows (par exemple, un partage Samba où l'option de sensibilité à la casse a été activée).

ContentType : long

Réservé.

ShareUserName : BSTR

Le nom d'utilisateur à utiliser si la ressource est un volume réseau monté par le logiciel.

SharePassword : BSTR

Le mot de passe à utiliser la ressource est un volume réseau monté par le logiciel.

PathIsValid : VARIANT_BOOL readonly

Une variable booléenne indiquant si l'élément source a pu être trouvé lors de la dernière sauvegarde. Si ce n'est pas le cas, la sauvegarde ne s'exécutera pas correctement et vous devrez impérativement supprimer ou faire pointer l'élément source vers son nouveau nom, s'il a été déplacé ou renommé.

CDPFullBackupNeeded : VARIANT_BOOL readonly

Une variable booléenne indiquant si une sauvegarde complète est nécessaire pour cet élément, lorsque la sauvegarde continue est activée pour la tâche parente. Si cette variable vaut true, la sauvegarde continue ne sera pas activée jusqu'à la prochaine exécution complète de la sauvegarde.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 BackupSourceID)

Charge en mémoire la source de sauvegarde BackupSourceID.

VARIANT_BOOL Update(NsConnection Connection)

Met à jour la source de sauvegarde représentée par l'objet.

VARIANT_BOOL Delete(NsConnection Connection)

Supprime la source de sauvegarde représentée par l'objet.

void InitializeWithFile(BSTR PathName)

Initialise l'objet pour création à partir d'un fichier existant pointé par PathName.

void InitializeWithDirectory(BSTR PathName, VARIANT_BOOL RecurseDir)

Initialise l'objet pour création, à partir d'un dossier existant pointé par PathName. Si RecurseDir vaut true, les sous-dossiers sont aussi traités.

NsBackupFolder LoadContent(NsConnection Connection)

Charge en mémoire le contenu de l'élément sauvegardé, tel qu'il apparaît sur le serveur de sauvegarde.

NsBackupFolder LoadContentAtDate(NsConnection Connection, VARIANT AtDate)

Charge en mémoire le contenu de l'élément sauvegardé, tel qu'il apparaît sur le serveur de sauvegarde à la date AtDate, au format UTC.

NsBackupFolder LoadContentWithUI(NsConnection Connection)

Similaire à LoadContent, avec une interface graphique affichant la progression du chargement. Cette fonction n'est pas threadsafe : elle ne doit être utilisée qui si c'est le thread principal de votre application qui l'appelle.

NsBackupFolder LoadContentAtDateWithUI(NsConnection Connection, VARIANT AtDate)

Similaire à LoadContentAtDate, avec une interface graphique affichant la progression du chargement. Cette fonction n'est pas threadsafe : elle ne doit être utilisée qui si c'est le thread principal de votre application qui l'appelle.

VARIANT GetLocalFileDate(VARIANT FileDate)

Convertit si besoin une date FileDate portée par un fichier contenu par l'élément en une date affichable dans le fuseau horaire courant. Un ajustement à lieu uniquement si DatesEncoding désigne un encodage UTC, sinon la date fournie est renvoyée sans modification.

BSTR BuildPath(BSTR RelativePath)

Construit le chemin d'accès complet du fichier contenu dans la source, à partir du chemin relatif RelativePath fourni.

VARIANT_BOOL GetDynInitSettings(NsConnection Connection, BSTR DynInitSettings)

Retourne les pramètres d'initialisation dynamique de la source, si elle est distribuée depuis un modèle de sauvegarde.

VARIANT_BOOL SetDynInitSettings(NsConnection Connection, BSTR DynInitSettings)

Définis les pramètres d'initialisation dynamique de la source, si elle est distribuée depuis un modèle de sauvegarde.

Ajout d'un dossier à une sauvegarde dont le nom est saisi par l'utilisateur

Set connection = CreateObject("NsAPI.NsConnection")

const nsSourceIsFolder = 1
const nsDateEncodingUnknow = 0
const THROOTOPT_INCLUDE_IN_SNAPSHOT_SET = 16

' Renvoit l'ID d'une sauvegarde à partir de son nom
Function FindBackupByName(backups, name)
  FindBackupByName = -1
  
  for each backup in backups
    if StrComp(backup.Name, name, vbTextCompare) = 0 then
      FindBackupByName = backup.ID
      Exit Function
    end if
  next
End Function

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then
    ' Demander un nom de sauvegarde
    backupName = InputBox("Saisissez le nom d'une sauvegarde sur le serveur (ex : Ma sauvegarde) : ", "Test de l'API UB", "")
    
    ' L'utilisateur a t-il saisi un nom de backup ?
    if backupName <> "" then
      backupID = FindBackupByName(server.AllBackups(connection), backupName)

      ' Est ce qu'on a bien trouvé une sauvegarde valide ?
      if sysutils.CompareInt64(backupID, -1) = 0 then
        MsgBox "Erreur : la sauvegarde """ & backupName & """ n'a pu être trouvée sur le serveur."
      else
        pathToAdd = ""
        ' OK, on a trouvé la sauvegarde. On demande un dossier à ajouter à la sauvegarde.
        set objShell  = CreateObject("Shell.Application")
        set objFolder = objShell.BrowseForFolder(0, "Selectionnez un dossier à ajouter à la sauvegarde : ", 0, myStartFolder )

        if IsObject(objfolder) Then pathToAdd = objFolder.Self.Path
        
        if pathToAdd <> "" then
           set backupSource = CreateObject("NsAPI.NsBackupSource")
           
           backupSource.ID = -1 ' Constante nécessaire pour la création
           backupSource.BackupID = backupID ' Lier au backup sélectionné
           backupSource.PathName = pathToAdd  ' Le chemin à sauvegarder
           backupSource.RecurseDir = MsgBox("Souhaitez-vous sauvegarder aussi les sous-dossiers ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbYes
           backupSource.SourceType = nsSourceIsFolder ' Le type de l'élément à sauvegarder : un dossier
           backupSource.DatesEncoding = nsDateEncodingUnknow ' Encodage de la date inconnu, le logiciel la déterminera lors de l'exécution
           backupSource.Options = THROOTOPT_INCLUDE_IN_SNAPSHOT_SET ' Inclure la source dans le snapshot VSS
           
           if backupSource.Update(connection) then ' Créer
             MsgBox "Le dossier a été correctement ajouté à la liste des éléments à sauvegarder."
           else
             MsgBox "Erreur lors de l'ajout de l'élément à sauvegarder"
           end if
        end if
      end if
    end if
  else
    MsgBox "Impossible de charger les informations serveur."
  end if
  
  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if