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
Agregue al proyecto de Visual Studio una referencia a Microsoft.Sharepoint.
Agregue instrucciones Using para Microsoft.SharePoint y Microsoft.SharePoint.Administration.
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
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
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
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
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)
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 ampliar la utilidad STSADM
Referencia
Microsoft.SharePoint.Administration.Backup
Conceptos
Programación con el modelo de objetos de copia de seguridad y restauración de SharePoint Foundation