Share via


Procédure : sauvegarder et restaurer une seule collection de sites par programmation

Dernière modification : jeudi 4 novembre 2010

S’applique à : SharePoint Foundation 2010

Cette rubrique explique comment sauvegarder et restaurer des collections de sites individuelles par programmation.

Pour sauvegarder ou restaurer une collection de sites

  1. Ajoutez à votre projet Visual Studio une référence à Microsoft.Sharepoint.

  2. Ajoutez des instructions using pour Microsoft.SharePoint et Microsoft.SharePoint.Administration.

  3. Ajoutez les lignes suivantes pour obtenir une référence à la batterie de serveurs et à sa collection de services.

    SPFarm myFarm = SPFarm.Local;
    SPServiceCollection myServices = myFarm.Services;
    
    Dim myFarm As SPFarm = SPFarm.Local
    Dim myServices As SPServiceCollection = myFarm.Services
    
  4. Récupérez une référence au service Web qui publie l'application Web hébergeant votre collection de sites à l'aide du Guid du service, qui est la valeur de sa propriété Id().

    Guid serviceID = new Guid("21d91b29-5c5b-4893-9264-4e9c758618b4");
    SPWebService webPubService = (SPWebService)myServices[serviceID];
    
    Dim serviceID As New Guid("21d91b29-5c5b-4893-9264-4e9c758618b4")
    Dim webPubService As SPWebService = CType(myServices(serviceID), SPWebService)
    

    Si vous ne connaissez pas le Id() de l'application qui publie le service Web, vous pouvez parcourir tous les services et reporter leur Name(), TypeName et Id(). Exemple :

    foreach (SPService service in myServices)
    {
        if (service is SPWebService)
        {
        Console.WriteLine("Web service name:" + webService.Name);
        Console.WriteLine("Web service type:" + webService.TypeName);
        Console.WriteLine("Web service ID:" + webService.Id);
        Console.WriteLine();
        Console.Readline();
        }
    }
    
    For Each service As SPService In myServices
       If TypeOf service Is SPWebService Then
          Console.WriteLine("Web service name:" & webService.Name)
          Console.WriteLine("Web service type:" & webService.TypeName)
          Console.WriteLine("Web service ID:" & webService.Id)
          Console.WriteLine()
          Console.Readline()
       End If
    Next service
    
  5. Récupérez une référence à l'application Web qui héberge votre collection de sites. Si vous connaissez son URL, vous pouvez obtenir une référence avec la méthode Lookup() statique. Vous pouvez aussi utiliser le Guid de l'application, qui est la valeur de sa propriété Id(). Le code suivant présente la deuxième méthode.

    SPWebApplicationCollection myApps = webPubService.WebApplications;
    Guid appID = new Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37");
    SPWebApplication myApp = myApps[appID];
    
    Dim myApps As SPWebApplicationCollection = webPubService.WebApplications
    Dim appID As New Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37")
    Dim myApp As SPWebApplication = myApps(appID)
    

    Si vous ne connaissez pas le Id() de l'application Web qui héberge votre collection de sites, vous pouvez parcourir toutes les applications Web et reporter leur Name(), TypeName et Id(). Exemple :

    foreach (SPWebApplication app in webApps)
    {
        Console.WriteLine("Web application name:" + app.Name);
        Console.WriteLine("Web application type:" + app.TypeName);
        Console.WriteLine("Web application ID:" + app.Id);
        Console.WriteLine();
        Console.Readline();
    }
    
    For Each app As SPWebApplication In webApps
        Console.WriteLine("Web application name:" & app.Name)
        Console.WriteLine("Web application type:" & app.TypeName)
        Console.WriteLine("Web application ID:" & app.Id)
        Console.WriteLine()
        Console.Readline()
    Next app
    
  6. Récupérez une référence à la collection de sites de l'application Web.

    SPSiteCollection mySiteCols = myApp.Sites;
    
    Dim mySiteCols As SPSiteCollection = myApp.Sites
    
  7. Pour sauvegarder une collection de sites, appelez la méthode Backup(). Comme paramètres, utilisez :

    • L'URL complète de la collection de sites, c'est-à-dire l'URL complète du son site Web de niveau supérieur.

    • Le chemin complet et le nom du fichier qui contiendra le contenu compressé de la collection de sites.

    • True, si l'opération doit remplacer un fichier de sauvegarde existant de même nom, sinon false.

    mySiteCols.Backup(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
    
    mySiteCols.Backup("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)
    
  8. Pour restaurer une collection de sites, appelez la méthode Restore(). Elle utilise les mêmes paramètres que la méthode Backup(). Le paramètre Boolean indique si la collection de sites doit être remplacée si elle existe déjà à l'URL spécifiée.

    mySiteCols.Restore(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
    
    mySiteCols.Restore("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)
    

Exemple

L'exemple suivant présente un moyen simple de sauvegarder ou restaurer par le biais de la programmation une collection de sites. Vous devez remplacer toutes les valeurs Guid par celles qui correspondent à votre déploiement et remplacer les valeurs des espaces réservés des méthodes Backup et Restore par les véritables URL et chemins de votre déploiement.

// Get a reference to the Web application publishing
// Web service.
SPFarm myFarm = SPFarm.Local;
SPServiceCollection myServices = myFarm.Services;
Guid serviceID = new Guid("21d91b29-5c5b-4893-9264-4e9c758618b4");
SPWebService webPubService = (SPWebService)myServices[serviceID];

// Get a reference to the Web application that hosts the 
// site collection.
SPWebApplicationCollection myApps = webPubService.WebApplications;
Guid appID = new Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37");
SPWebApplication myApp = myApps[appID];

// As alternative to the preceding three lines, you can use
// the following when you know the URL of the Web application:
//     SPWebApplication myApp = SPWebApplication.Lookup(url_of_Web_app)

// Get a reference to the Web application's collection of 
// site collections. 
SPSiteCollection mySiteCols = myApp.Sites;

// Back up a specified site collection. 
mySiteCols.Backup(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);

// Restoring the site collection is identical to the preceding
// code except that the "Restore" is used in place of "Backup".
//
// mySiteCols.Restore(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
' Get a reference to the Web application publishing
' Web service.
Dim myFarm As SPFarm = SPFarm.Local
Dim myServices As SPServiceCollection = myFarm.Services
Dim serviceID As New Guid("21d91b29-5c5b-4893-9264-4e9c758618b4")
Dim webPubService As SPWebService = CType(myServices(serviceID), SPWebService)

' Get a reference to the Web application that hosts the 
' site collection.
Dim myApps As SPWebApplicationCollection = webPubService.WebApplications
Dim appID As New Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37")
Dim myApp As SPWebApplication = myApps(appID)

' As alternative to the preceding three lines, you can use
' the following when you know the URL of the Web application:
'     SPWebApplication myApp = SPWebApplication.Lookup(url_of_Web_app)

' Get a reference to the Web application's collection of 
' site collections. 
Dim mySiteCols As SPSiteCollection = myApp.Sites

' Back up a specified site collection. 
mySiteCols.Backup("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)

' Restoring the site collection is identical to the preceding
' code except that the "Restore" is used in place of "Backup".
'
' mySiteCols.Restore(@"http:// Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);

La classe SPSite n'implémente pas IBackupRestore et les méthodes Backup() et Restore() n'utilisent pas les fonctionnalités de l'espace de noms Microsoft.SharePoint.Administration.Backup. Cela signifie que les enregistrements des sauvegardes et restaurations des collections de sites ne sont pas conservés dans un fichier d'historique (spbrtoc.xml) dans le répertoire de la sauvegarde. De même, les données de sauvegarde et de restauration ne sont pas stockées dans des fichiers spbackup.xml ou sprestore.xml, et les opérations sur les collections de sites ne sont pas consignées non plus dans des fichiers spbackup.log ou sprestore.log.

Si vous souhaitez effectuer un type de journalisation des sauvegardes et restaurations des opérations sur les collections de sites, vous devez programmer votre propre système. L’écriture dans les fichiers spbrtoc.xml,spbackup.xml, sprestore.xml, spbackup.log et sprestore.log créés par le système n’est pas prise en charge dans SharePoint Foundation. Il n’est pas possible non plus de les déplacer, les supprimer ou les renommer. Toutefois, vous pouvez créer des fichiers qui fusionnent les données des fichiers créés par le système avec les données de vos sauvegardes et restaurations de collections de sites.

Voir aussi

Tâches

Pocédure : sauvegarder du contenu par programme

Procédure : restaurer le contenu par programmation

Procédure : créer une classe de contenu qui peut être sauvegardée et restaurée

Procédure : étendre l'utilitaire STSADM

Référence

Microsoft.SharePoint.Administration.Backup

Backup

Restore

Concepts

Programmation avec le modèle objet de sauvegarde/restauration de SharePoint Foundation

Autres ressources

Outil en ligne de commande stsadm.exe