class NsBackup

La classe NsBackup représente une sauvegarde.

Pour qu'une sauvegarde puisse être exécutée, elle doit au moins contenir au moins un objet de type NsBackupSource, représentant un fichier ou un dossier à sauvegarder.

Une sauvegarde doit être attribuée au moins à un utilisateur. Les attributions des sauvegardes sont gérées à travers des objets NsBackupAssociation. Lorsque vous créez une sauvegarde, utilisez la fonction CreateAndAttributeToUser qui permet que le serveur gère de lui meme l'attribution de la sauvegarde à l'utilisateur spécifié.

ID : __int64

L'identificateur unique de la sauvegarde. Les constantes suivantes peuvent-être utilisées :

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

CreationDate : VARIANT readonly

La date de création de la sauvegarde sur le serveur, au format UTC.

Name : BSTR

Le nom de la sauvegarde, telle qu'elle sera affichée dans les interfaces clientes.

Platform : enum NsPlatformType

La plaforme cliente sur lequelle sera exécuté la sauvegarde.

LastExecSucceeded : VARIANT_BOOL readonly

Indique si la dernière exécution a réussi, c'est à dire que la sauvegarde est arrivée à son terme sans reporter aucune erreur.

LastFullExecCompleted : VARIANT_BOOL readonly

Indique si la dernière exécution complète est arrivée à son terme.

LastCDPExecCompleted : VARIANT_BOOL readonly

Indique si la dernière sauvegarde continue est arrivée à son terme, si la sauvegarde continue est activée.

LastExecQuotasExceeded : VARIANT_BOOL readonly

Indique si la dernière sauvegarde a dépassé les quotas. Les sauvegardes planifiées ayant dépassé les quotas ne sont pas automatiquement relancées.

CompareMode : enum NsCompareMode

Le mode de comparaison à utiliser pour détecter qu'un fichier a été modifié depuis la dernière sauvegarde.

BackupOptions : long

Les options générales de la sauvegarde. Les valeurs suivantes peuvent-être combinées :

  • THBKPOPT_USEARCHIVEBIT = 1 : Utiliser si possible le but d'archive pour détecter si les fichiers ont été mis à jour,
  • THBKPOPT_FOLLOWLINKS = 2 : Suivre les liens symboliques,
  • THBKPOPT_BACKUPEMPTYFILES = 4 : Les fichiers vides doivent-être sauvegardés,
  • THBKPOPT_BACKUPHIDDENOBJECTS = 8 : Les fichiers et dossiers cachés doivent-être sauvegardés,
  • THBKPOPT_BACKUPSYSOBJECTS = 32 : Les fichiers et dossiers système doivent-être sauvegardés,
  • THBKPOPT_FORCERETRYUNTILCOMPLETION = 64 : L'agent de sauvegarde en arrière-plan doit relancer la sauvegarde si elle est interrompue durant son exécution, même si celle-ci n'est pas planifiée,
  • THBKPOPT_EXCLUDEFROMSTDBACKUPLIST = 128 : Exclure la sauvegarde de la liste "Exécuter toutes les sauvegardes",
  • THBKPOPT_UPDATE_METADATA_SEPARATELY = 256 : Lorsque les métadonnées des fichiers sont modifiées, l'agent les mettra à jour séparément sur le serveur de sauvegarde,
  • THBKPOPT_NOCLEARARCHIVEBIT = 1024 : Le bit d'archive des fichiers sauvegardés avec succès ne seront pas réinitialisés après l'opération.

ReportOptions : long

Les options de reporting de la sauvegarde. Les valeurs suivantes peuvent-être combinées :

  • THRPTOPT_INCLUDE_EXCLUDED_FILES = 1 : L'agent client doit communiquer au serveur la liste de tous les fichiers exclus de la sauvegarde.

StorageOptions : long

Les options de stockage de la sauvegarde. Les valeurs suivantes peuvent-être utilisées:

  • THSTROPT_IS_ARCHIVED_BACKUP = 32 : La sauvegarde est marquée comme archivée sur le serveur de sauvegarde,
  • THSTROPT_DEFERRED_VOLUME_SNAPSHOTS = 64 : Utiliser les clichés de volume uniquement si des fichiers ouverts sont rencontrés durant l'exécution de l'opération,
  • THSTROPT_VOLUME_SNAPSHOTS = 128 : Toujours utiliser les clichés de volume,
  • THSTROPT_ISTEMPLATE = 256 : La sauvegarde est un modèle de sauvegarde.

DeltaLevel : enum NsDeltaLevel

Le niveau Delta pour la sauvegarde (désactivé ou transfert delta).

EnableCDP : VARIANT_BOOL

Une valeur booléenne indiquant si la sauvegarde continue est activée ou non pour la sauvegarde.

VSSWriteInactivityPeriod : long

Le délai d'inactivité en secondes avant la création du cliché VSS, si les clichés de données sont activés. Le logiciel attend que les éléments à sauvegarder ne soient plus modifiés pendant cette courte période pour assurer la consistence des clichés contenant des formats de fichiers ne possédant pas de providers VSS adéquats.

IsLocked : VARIANT_BOOL readonly

Retourne un indicateur booléen indiquant si la sauvegarde est verrouillée ou non. Les sauvegardes verrouillées ne peuvent pas être exécutées, afin que les données sauvegardées ne puissent être écrasées par mégarde.

DispatchState : enum NsDispatchState

Le statut de distribution de la sauvegarde, si la sauvegarde a été créée depuis le serveur de sauvegarde.

KeepVersionsCount : long

Le nombre maximal de versions à conserver pour un fichier.

KeepVersionsDuration : long

Le nombre maximal de jours de conservation pour les anciennes versions d'un fichier.

KeepDeletedFilesDuration : long

Le nombre maximal de jours de conservation pour les fichiers marqués comme supprimés par l'agent client.

LastExecDate : VARIANT readonly

La date de dernière sauvegarde, au format UTC.

LastVerificationDate : VARIANT readonly

La date de dernière vérification de la sauvegarde, au format UTC.

SchedulingOptions : enum NsSchedulingOptions

Les options de planification. Les paramètres de planification peuvent aussi être définis par la classe NsBackupScheduling.

BackupMode : enum NsBackupMode

Le mode de sauvegarde.

CDPInterval : long

Le nombre de minutes minimum entre deux synchronisations avec le serveur si la sauvegarde continue est activée.

Revision : __int64 readonly

L'identificateur de révision de la sauvegarde, incrémenté à chaque exécution.

StorageAccountID : __int64

L'identificateur du compte de stockage hébergeant la sauvegarde.

TemplateBackupID : __int64 readonly

Si la sauvegarde est issue d'un modèle de sauvegarde, l'identificateur du modèle.

IsTemplate : VARIANT_BOOL

Indique si la sauvegarde est un modèle de sauvegarde ou une sauvegarde classique.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 BackupID)

Charge en mémoire la sauvegarde d'identificateur BackupID

VARIANT_BOOL Update(NsConnection Connection)

Créée ou met à jour la sauvegarde décrite par l'objet.

VARIANT_BOOL GetComments(NsConnection Connection, BSTR Comments)

Retourne les commentaires associés à l'objet.

VARIANT_BOOL SetComments(NsConnection Connection, BSTR Comments)

Définit les commentaires associés à l'objet.

NsCustomAttributes CustomAttributes(NsConnection Connection)

Renvoit les attributs personnalisés de l'objet.

VARIANT_BOOL Lock(NsConnection Connection)

Verrouille la sauvegarde.

VARIANT_BOOL Unlock(NsConnection Connection)

Dévérouille la sauvegarde.

VARIANT_BOOL Pack(NsConnection Connection, NsBackupPackMode Mode, long VersionsToKeep, long DaysToKeep)

Compacte la sauvegarde suivant le mode défini par Mode.

VARIANT_BOOL PurgeBrokenFiles(NsConnection Connection)

Supprime les fichiers en attente de reprise pour la sauvegarde représentée par l'objet.

VARIANT_BOOL CreateAndAttributeToUser(NsConnection Connection, __int64 UserID)

Créée et attribue la sauvegarde représentée par l'objet à l'utilisateur UserID. Cette fonction doit être utilisée pour toute création d'une nouvelle sauvegarde.

VARIANT_BOOL Delete(NsConnection Connection)

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

VARIANT_BOOL Detach(NsConnection Connection)

Supprime les informations sur la sauvegarde dans la base de données en conservant les données sauvegardées. Cette opération n'est accessible qu'aux administrateurs du service de sauvegarde.

VARIANT_BOOL HasCompressionSet(NsConnection Connection, VARIANT_BOOL HasCompressionSet)

Renvoit dans HasCompressionSet si des éléments compressés se trouvent actuellement stockés dans la sauvegarde.

VARIANT_BOOL HasEncryptionSet(NsConnection Connection, VARIANT_BOOL HasEncryptionSet)

Renvoit dans HasEncryptionSet si des éléments chiffrés se trouvent actuellement stockés dans la sauvegarde.

VARIANT_BOOL EnableCompression(NsConnection Connection, VARIANT_BOOL Enable)

Si Enable vaut true, la compression est activée pour la sauvegarde. Si Enable vaut false, la compression est désactivée pour la sauvegarde, si elle était précedemment activée.

VARIANT_BOOL EnableEncryption(NsConnection Connection, VARIANT_BOOL Enable)

Si Enable vaut true, le chiffrement est activé pour la sauvegarde. Si Enable vaut false, le chiffrement est désactivé pour la sauvegarde, s'il était précedemment activé.

NsBackupSchedulingStatus SchedulingStatus(NsConnection Connection)

Retourne des informations sur la prochaine date d'exécution de la sauvegarde, calculée en fonction des paramètres de planification récurrents définis.

VARIANT_BOOL Clear(NsConnection Connection)

Efface les fichiers stockés pour la sauvegarde sur le serveur.

NsBackupSourceCollection Sources(NsConnection Connection)

Retourne les fichiers et les dossiers sources à sauvegarder.

NsDeltaParameters DeltaParameters(NsConnection Connection)

Retourne les paramètres de transfert Delta pour la sauvegarde.

NsBackupAssociationCollection Associations(NsConnection Connection)

Retourne les utilisateurs associées à la sauvegarde.

NsExecutionRequest CreateExecutionRequestForUser(NsConnection Connection, NsUser TargetUser, VARIANT_BOOL RetryIfInterrupted)

Poste une demande d'exécution de la sauvegarde représentée par l'objet par l'utilisateur TargetUser. Si RetryIfInterrupted vaut true, la sauvegarde est relancée par l'agent client tant que l'exécution n'arrive pas à son terme. La fonction retourne l'objet NsExecutionRequest correspondant, ou une référence d'objet invalide en cas d'erreur.

NsExecutionRequest CreateExecutionRequestForUserByID(NsConnection Connection, __int64 TargetUserID, VARIANT_BOOL RetryIfInterrupted)

Poste une demande d'exécution de la sauvegarde représentée par l'objet par l'utilisateur d'identificateur UserID. Si RetryIfInterrupted vaut true, la sauvegarde est relancée par l'agent client tant que l'exécution n'arrive pas à son terme. La fonction retourne l'objet NsExecutionRequest correspondant, ou une référence d'objet invalide en cas d'erreur.

NsServerAlertCollection Alerts(NsConnection Connection, VARIANT_BOOL OnlyRaised)

Renvoit les alertes associées à l'objet. Si OnlyRaised vaut true, seul les alertes déclenchées sont renvoyées.

NsBackupCommitCollection Commits(NsConnection Connection)

Retourne les dernières opérations effectuées sur la sauvegarde du point de vue de la base de données.

NsHistoryCollection History(NsConnection Connection, long Limit)

Retourne les informations d'exécution sur les dernières opérations effectuées sur la sauvegarde. Si le paramètre Limit possède une valeur supérieure à 0, seul les Limit dernières opérations sont retournées.

NsBrokenFileCollection BrokenFiles(NsConnection Connection)

Retourne la liste des fichiers en attente de transfert pour la sauvegarde.

NsBackupVerification RequestVerification(NsConnection Connection, NsCheckMode CheckMode)

Poste une demande de vérification manuelle pour la sauvegarde, suivant le mode de vérification désigné par CheckMode. Renvoit l'objet NsBackupVerification si l'opération réussit, une référence d'objet invalide en cas d'erreur.

NsBackupVerificationCollection Verifications(NsConnection Connection)

Retourne la liste des vérifications planifiées, en cours ou terminées pour la sauvegarde.

NsSearchEngine SearchEngine()

Retourne un objet permettant de rechercher dans la sauvegarde représentée par l'objet.

NsDataAccessLogEntryCollection DataAccessLogEntries(NsConnection Connection)

Retourne la liste des opérations ayant entraîné l'accès aux données dans la sauvegardées.

NsBackupActiveBytesInformation ActiveBytesInformation(NsConnection Connection)

Retourne les statistiques d'occupation de la sauvegarde.

Exemple de création et d'exécution d'une sauvegarde

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

const nsPlatformWindowsNT = 1
const nsCompareFileDates = 1
const nsBackupIsIncremental = 2
const nsSchedulingCustom = 4

const THBKPOPT_BACKUPHIDDENOBJECTS = 8
const THBKPOPT_BACKUPSYSOBJECTS = 32
const THSTROPT_VOLUME_SNAPSHOTS = 128
const THBKPOPT_NOCLEARARCHIVEBIT = 1024

' Renvoit l'ID d'un utilisateur à partir de sa description / nom complet
Function FindUserByName(groups, connection, name)
  FindUserByName = -1

  for each group in groups
    set users = group.Users(connection)
    for each user in users
      if StrComp(user.description, name, vbTextCompare) = 0 then
        FindUserByName = user.ID
        Exit Function
      end if
    next
  next
End Function

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

  if server.Load(connection) then ' Chargement des infos serveur
    ' On demande un nom d'utilisateur auquel attribuer la nouvelle sauvegarde.
    userName = InputBox("Saisissez le nom d'un utilisateur sur le serveur (ex : Jacques Labarre) : ", "Test de l'API UB", "")

    if userName <> "" then
      ' Transformer le nom de l'utilisateur en son identifiant numérique unique
      userID = FindUserByName(server.UserGroups(connection), connection, userName)

      ' Est-ce qu'on a bien trouvé un utilisateur valide ?
      if sysutils.CompareInt64(userID, -1) = 0 then
        MsgBox "Erreur : l'utilisateur """ & userName & """ n'a pu être trouvé sur le serveur."
      else
        set newBackup = CreateObject("NsAPI.NsBackup")

        newBackup.ID = -1 ' Nécessaire pour créer la sauvegarde
        newBackup.Name = "Test de l'API UB" ' Le nom de la sauvegarde
        newBackup.Platform = nsPlatformWindowsNT ' La sauvegarde sera exécutée sous Windows
        newBackup.CompareMode = nsCompareFileDates ' Utiliser les dates de fichiers
        newBackup.BackupOptions = THBKPOPT_BACKUPHIDDENOBJECTS or THBKPOPT_BACKUPSYSOBJECTS or THBKPOPT_NOCLEARARCHIVEBIT ' On sauvegarde les fichiers cachés, système, et on ne réinitialise pas le bit d'archive
        newBackup.ReportOptions = 0 ' Pas d'options de reporting particulières
        newBackup.StorageOptions = THSTROPT_VOLUME_SNAPSHOTS ' Utiliser VSS
        newBackup.VSSWriteInactivityPeriod = 3 ' Période d'inactivité de 3 secondes
        newBackup.BackupMode = nsBackupIsIncremental ' Conserver l'historique des modifications
        newBackup.SchedulingOptions = nsSchedulingCustom ' On va planifier cette sauvegarde (voir plus bas)
        newBackup.KeepVersionsCount = 0 ' On n'utilise pas de limite par nombre de versions
        newBackup.KeepVersionsDuration = 7 ' On garde les anciennes versions 7 jours max
        newBackup.KeepDeletedFilesDuration = 10 ' On garde les fichiers supprimés 10 jours max

        ' Créer la sauvegarde et l'attribuer à l'utilisateur courant.
        if newBackup.CreateAndAttributeToUser(connection, userID) then
          ' On active le chiffrement...
          if not newBackup.EnableEncryption(connection, true) then
            MsgBox "Impossible d'activer le chiffrement."
          end if
          ' On active la compression...
          if not newBackup.EnableCompression(connection, true) then
             MsgBox "Impossible d'activer la compression."
          end if

          ' On planifie la sauvegarde tous les jours à 20h
          set scheduling = CreateObject("NsAPI.NsBackupScheduling")
          scheduling.SetRecurringScheduling 20, 0
          if not scheduling.Save(connection, newBackup.ID) then
            MsgBox "Impossible de définir les paramètres de planification."
          end if

          ' On ajoute un dossier à sauvegarder !
          set newFolder = CreateObject("NsAPI.NsBackupSource")
          ' On sauvegarde le dossier "c:\fp32"
          newFolder.InitializeWithDirectory "C:\fp32", true
          newFolder.BackupID = newBackup.ID

          ' Créer la source de backup
          if newFolder.update(connection) then
            ' On exécute la sauvegarde !
            set executionRequest = newBackup.CreateExecutionRequestForUserByID(connection, userID, true)
            if executionRequest is nothing then
              MsgBox "Impossible de marquer la sauvegarde comme à exécuter."
            else
              MsgBox "La sauvegarde a été créée et marquée à exécuter avec succès."
            end if
          else
            MsgBox "Impossible d'ajouter un dossier à sauvegarder"
          end if
        else
          Msgbox "Impossible de créer et d'attribuer la sauvegarde."
        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