Compartir a través de


Procedimiento para realizar la copia de seguridad y restaurar una única colección de sitios mediante programación

Última modificación: jueves, 04 de noviembre de 2010

Hace referencia a: SharePoint Foundation 2010

En este tema se describe cómo realizar una copia de seguridad y restaurar colecciones de sitios individuales mediante programación.

Para realizar una copia de seguridad o restaurar una colección de sitios

  1. Agregue al proyecto de Visual Studio una referencia a Microsoft.Sharepoint.

  2. Agregue instrucciones Using para Microsoft.SharePoint y Microsoft.SharePoint.Administration.

  3. Agregue las líneas siguientes para obtener una referencia a la granja de servidores y su colección de servicios.

    SPFarm myFarm = SPFarm.Local;
    SPServiceCollection myServices = myFarm.Services;
    
    Dim myFarm As SPFarm = SPFarm.Local
    Dim myServices As SPServiceCollection = myFarm.Services
    
  4. Obtenga una referencia al servicio web que publica la aplicación web que hospeda la colección de sitios mediante el uso del Guid del servicio que es el valor de la propiedad 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 no conoce el Id() del servicio web de publicación de aplicaciones, puede realizar iteraciones en todos los servicios y notificar su Name(), TypeName e Id(). Por ejemplo:

    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. Obtenga una referencia a la aplicación web que hospeda la colección de sitios. Si conoce la dirección URL de la aplicación web podrá obtener una referencia con el método Lookup() estático. Si lo prefiere, puede usar el Guid de la aplicación, que es el valor de la propiedad Id(). El siguiente código muestra el segundo método.

    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 no conoce el Id() de la aplicación web que hospeda su colección de sitios, puede realizar iteraciones en todas las aplicaciones web y notificar su Name(), TypeName e Id(). Por ejemplo:

    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. Obtenga una referencia a colección de las colecciones de sitios de la aplicación web.

    SPSiteCollection mySiteCols = myApp.Sites;
    
    Dim mySiteCols As SPSiteCollection = myApp.Sites
    
  7. Para realizar una copia de seguridad de una colección de sitios, llame al método Backup(). Pase los siguientes parámetros:

    • La dirección URL completa de la colección de sitios; es decir, la dirección URL completa del sitio web de nivel superior.

    • La ruta de acceso completa y el nombre del archivo que guardará el contenido comprimido de la colección de sitios.

    • True, si la operación debe sobrescribir un archivo de copia de seguridad existente con el mismo nombre; false, si no debe hacerlo.

    mySiteCols.Backup(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
    
    mySiteCols.Backup("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)
    
  8. Para restaurar una colección de sitios, llame al método Restore(). Utiliza los mismos parámetros que el método Backup(). El parámetro Boolean indica si la colección de sitios se debe sobrescribir si ya existe en la dirección URL especificada.

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

Ejemplo

El siguiente ejemplo muestra una forma sencilla de realizar una copia de seguridad o restaurar una colección de sitios mediante programación. Tendrá que reemplazar todos los valores Guid por valores reales de la implementación y reemplazar los valores de marcador de posición de los métodos de copia de seguridad y restauración por direcciones URL y rutas de acceso reales de la implementación.

// 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 clase SPSite no implementa IBackupRestore, y los métodos Backup() y Restore() no usan los servicios del espacio de nombres Microsoft.SharePoint.Administration.Backup. Esto significa que los registros de las copias de seguridad y restauraciones de colecciones de sitios no se mantienen en un archivo de historial (spbrtoc.xml) en el directorio de copia de seguridad. De forma similar, los datos de copia de seguridad y restauración no se almacenan en los archivos spbackup.xml ni sprestore.xml, y estas operaciones de la colección de sitios no se registran en los archivos spbackup.log ni sprestore.log.

Si desea realizar algún tipo de registro de las copias de seguridad y las restauraciones de las operaciones de colección de sitios, tendrá que programar su propio sistema. No se admite la escritura en los archivos spbrtoc.xml,, spbackup.xml, sprestore.xml, spbackup.log y sprestore.log creados por el sistema en SharePoint Foundation. Tampoco se permite moverlos, eliminarlos ni cambiarlos de nombre. Sin embargo, puede crear archivos que combinen los datos de los archivos creados por el sistema con datos de las copias de seguridad y las restauraciones de la colección de sitios.

Vea también

Tareas

Cómo: Hacer copias de seguridad de contenido mediante programación

Procedimiento para restaurar contenido mediante programación

Procedimiento para crear una clase de contenido que se pueda restaurar y de la que se pueda hacer una copia de seguridad

Procedimiento para ampliar la utilidad STSADM

Referencia

Microsoft.SharePoint.Administration.Backup

Backup

Restore

Conceptos

Programación con el modelo de objetos de copia de seguridad y restauración de SharePoint Foundation

Otros recursos

Herramienta de línea de comandos Stsadm.exe