class NsStorageStats

La classe NsStorageStats décrit les statistiques d'un compte de stockage, de type (NsStorage).

CountFiles : __int64 readonly

Le nombre de fichiers uniques stockés.

CountAllVersions : __int64 readonly

Le nombre total de fichiers et de leurs versions stockées.

StoredSize : __int64 readonly

Le volume de données stocké sur le serveur pour le compte de stockage.

TotalSize : __int64 readonly

Le volume total de données sur le poste client représenté par le compte de stockage.

CountBrokenFiles : __int64 readonly

Le nombre de transferts en attente de reprise associés au compte de stockage.

BrokenFilesSize : __int64 readonly

Le volume total de données en attente de reprise associés au compte de stockage.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 StorageID)

Charge en mémoire les statistiques de l'espace de stockage possédant l'identificateur StorageID.

Compactage des sauvegardes stockées sur un espace de stockage - affichage des statistiques avant/après

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

const nsPackSnapshot = 1

' Renvoit un espace de stockage à partir de son nom
Function FindStorageByName(server, connection, name)
  set FindStorageByName = nothing

  set storageSpaces = server.StorageAccounts(connection)
  
  for each storage in storageSpaces
    if StrComp(storage.Name, name, vbTextCompare) = 0 then
      set FindStorageByName = storage
      Exit Function
    end if
  next
End Function

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

  if server.Load(connection) then ' Chargement des infos serveur
    ' On demande le nom d'un espace de stockage
    storageName = InputBox("Saisissez le nom d'un espace de stockage :", "Test de l'API UB", "")

    if storageName <> "" then
      ' Récupérer l'objet espace de stockage
      set storage = FindStorageByName(server, connection, storageName)

      ' Est-ce qu'on a bien trouvé un espace de stockage valide ?
      if storage is nothing then
        MsgBox "Erreur : l'espace de stockage """ & storageName & """ n'a pu être trouvé sur le serveur."
      else
        set statsBefore = CreateObject("NsAPI.NsStorageStats")
        set statsAfter = CreateObject("NsAPI.NsStorageStats")
        
        ' Charger les statistiques avant le compactage
        if not statsBefore.LoadFromID(connection, storage.ID) then
          MsgBox "Impossible de charger les statistiques sur le compte utilisateur sélectionné."
        else
          packedBackups = 0
          ' On obtient la liste des sauvegardes stockées sur l'espace de stockage :
          set backups = storage.Backups(connection)
        
          ' On compacte tous les backups stockés
          for each backup in backups
            ' nsPackSnapshot => on garde que la dernière version des fichiers, les fichiers marqués comme effacés sont supprimés
            if backup.Pack(connection, nsPackSnapshot, 0, 0) then
              packedBackups = packedBackups + 1
            else
              ' La sauvegarde est peut être en cours d'utilisation
              MsgBox "Impossible de compacter la sauvegarde " & backup.Name
            end if
          next
        
          ' Toutes les sauvegardes ont été traitées. On obtient les statistiques de stockage après l'opération.
          if not statsAfter.LoadFromID(connection, storage.ID) then
            MsgBox "Impossible de charger les statistiques sur le compte utilisateur sélectionné après opération."
          else
            ' La différence constitue le volume de données effacé suite au compactage.
            MsgBox packedBackups & " sauvegardes ont été compactées. " & vbCrLf & sysutils.Int64ToStr(sysutils.Int64Sub(statsBefore.CountAllVersions, statsAfter.CountAllVersions)) & " fichier(s) ont été supprimés, représentant " & vbCrLf & sysutils.SizeToStr(sysutils.Int64Sub(statsBefore.StoredSize, statsAfter.StoredSize )) & " sur le serveur de sauvegarde."
          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