miércoles, 9 de junio de 2010

MSS 2010: Backups-Restores (II). Copias pormenorizadas

Este post es el segundo y último de una serie de dos dedicada a los backups-restores de SharePoint 2010:

MSS 2010: Backups-Restores (II). Copias pormenorizadas

En el post de hoy continuaremos viendo las novedades que SharePoint 2010 aporta en los Backups-Restores de forma totalmente out-of-the-box. En esta ocasión nos concentraremos en las copias pormenorizadas. Lo cierto es que el nombrecito se las trae (¿Quien realiza las traducciones para Microsoft?) Personalmente encuntro mucho más aclaratorio "copias granulares". En fin, pormenorizadas o granulares, allá vamos:

La primera opción de backup granular que encontraremos en la administración central es la de "realizar una copia de seguridad de la colección de sitios". Como su propia leyenda indica, esta opción nos permite realizar un backup directamente de una única colección de sitios. Recordaremos que con los Backups de conjunto de servidores se podian hacer backups de una aplicación web o de una base de contenidos, pero no de una colección de sitios como tal (una app. web o una BD pueden contener múltiples colecciones de sitios).

Al pulsar en dicha opción accederemos a una pantalla donde debemos seleccionar la aplicación web sobre la que queramos realizar el backup. Para ello se nos abrirá una nueva ventana donde seleccionaremos dicha colección de sitios.

Pantalla de selección de la colección de sitios que queremos copiar
Una vez seleccionada la colección de sitios a copiar, indicaremos el nombre del archivo donde se guardarà la copia en formato \\NombreServidor\NombreCarpetaCompartida\NombreFichero.bak. A destacar que en esta pantalla también aparecen los indicadores de disponibilidad del servicio de backups tal y como comenté en el post anterior.

Selección del nombre de archivo sobre el que realizar el backup de la colección de sitios.
Una vez pulsemos sobre "Iniciar copia de seguridad", el proceso de copia se iniciará y nos mostrará una pantalla de seguimiento de la operación.

Pantalla de seguimiento de la copia de seguridad de la colección de sitios.
Para los amantes de PowerShell (seguro que en 2010 todos nos hacemos amigos de él), la línea de comandos utilizada para realizar backups de colección de sitios es:
Backup-SPSite -Identity <URL de la colección de sitios> -Path <Ruta del fichero> [Force] [-NoSiteLock] [-UseSqlSnapshot] [-Verbose]
 
La segunda opción de backup pormenorizado (granular), es la de exportar un sitio o una lista. Todos recordareis que en SharePoint 2007 se podía realizar la operación "export" de un site mediante la línea de comandos stsadm, la novedad aquí reside en poder realizarlo directamente desde la administración central, y sobre todo, la capacidad de poder realizar un backup de una LISTA en concreto (Algo que hasta ahora no se podía hacer con el SharePoint out-of-the-box).

Para hacer un backup de un sitio o lista, deberemos acceder a esta opción desde la sección "Copia de seguridad y restauración" de la Administración central. Sharepoint nos mostrará una pantalla (con indicadores de disponibilidad) que nos permitirá elegir la colección de sitios, el sitio y la lista que deseamos copiar. Si no especificamos ninguna lista, la copia se realizará sobre el sitio. La ventana de selección de la lista incorpora un cuadro de búsqueda que nos permitirá situarnos directamente sobre la lista si introducimos en él una palabra distintiva por la que el nombre de esta empiece.
 Ventana de selección de la lista a copiar.

 
 Una vez seleccionado el sitio o lista a copiar, nos faltará especificar la ruta y nombre del archivo donde queramos almacenar la copia en formato \\NombreServidor\NombreCarpetaCompartida\NombreFichero.cmp. También podremos especificar si deseamos sobreescribir los archivos existentes o realizar una exportación completa de la seguridad del sitio o lista. Por último nos permitirá seleccionar qué versiones de los documentos queremos guardar, a elegir entre  exportar todas las versiones de los documentos, la última versión principal de cada uno de ellos, la versión actual o la última versión principal y última versión secundaria.
Pantalla de configuración del backup de un sitio o lista.

Una vez pulsemos sobre el botón de "iniciar la exportación" el proceso de copia empezará y nos mostrará una pantalla de seguimiento de la operación muy similar a la ya mostrada para backups de colecciones de sitios.
Para realizar estas acciones mediante PowerShell, se deberá utilizar el siguiente comando:
Export-SPWeb -Identity <URL del sitio> -Path <Ruta del fichero> [-ItemUrl <URL relativa del sitio, lista o librería>] [-IncludeUserSecurity] [-IncludeVersions] [-NoFileCompression] [-Verbose]
La tercera opción que SharePoint 2010 nos permite realizar respecto a backups granulares es la de "Recuperar datos de una base de datos de contenido no adjunto". Este tipo de operación es completamente novedoso dentro de SharePoint, ya que nos permite recuperar estructuras de una base de datos incluida en un servidor SQLServer, que no tiene porque estar anexado a la granja actual de SharePoint. También recupera datos de una Base de Datos que esté en nuestro servidor, pero que no esté asociada a ninguna de nuestras aplicaciones Web. Imaginaos que teneis un entorno de desarrollo local nuevo, donde quereis mantener las soluciones implantadas para diversos clientes. Realizando un backup de las bases de datos de contenido del cliente, e importando las colecciones de sitios mediante este proceso en vuestro entorno local, podriais ir asociando sites collections por cliente en la misma aplicacion web de desarrollo. También se podrían recuperar listas de un entorno de preproducción a uno de desarrollo... las utilidades son múltiples y variadas, y estoy convencido en que os ayudará en muchas ocasiones poder disponer de esta opción.
Mediante la recuperación de una base de datos de contenido no adjunto podremos recuperar tres tipos de estructuras de SharePoint: 
  • Colección de sitio
  • Sitio
  • Lista
El proceso empieza con una pantalla donde podremos especifiar el servidor de base de datos donde se encuentra la Base de datos de contenido (no tiene porque ser el servidor actual de la granja de SharePoint), el nombre de la base de datos en questión y el tipo de autenticación para acceder a él.
Tambíón podremos especificar al operación a realizar, a elegir entre: 
  • Examinar contenido: Nos permite explorar los contenidos de la base de datos de contenido conectada y postergar la decisión de si deseamos copiar una colección de sitios o exportar un sitio o lista.
  • Copia de seguridad de la colección de sitios: Accederemos directamente a la pantalla de copia de colección de sitios.
  • Exportar sitio o lista: Accederemos directamente a la pantalla de exportar un sitio o lista.

Pantalla de configuración del proceso de recuperación de una base de datos de contenido no adjunto

Si hemos elegido la opción de "Examinar contenido", dispondremos de una pantalla adicional donde podremos explorar las estructuras existentes. En esta pantalla podremos explorar tanto colecciones de sitios, como sitios, como listas. Una vez hayamos consultados el contenido de la base de datos, podremos indicar si deseamos realizar la copia de seguridad de la coleccíón de sitios o exportar el sitio o lista.
Pantalla de examinar contenido.

Tanto si hemos seleccionado el tipo de copia desde la pantalla incial como en la de exploración, pulsando el botón de "siguiente" llegaremos a una de las dos pantallas posibles en función de nuestra selección. Tanto las pantallas de los procedimientos de "copia de seguridad de la colección de sitios" como la de "exportar sitio o lista", a partir de este punto son idénticas a los procesos de copia de cada uno de estos componentes ya explicados anteriormente.
Al final obtendremos un fichero con la copia del contenido extraido de la base de datos, y a partir de aquí podremos realizar una operación de "restore" para incluirla en nuestra granja actual.
La cuarta operación disponible para las copias de seguridad granulares es la de "Comprobar el estado de trabajo de copia de seguridad pormenorizada", que nos llevará a una pantalla informativa de los últimos procedimientos de backup granulares realizados (muy similar a la del conjunto de servidores).

 
Pantalla de informes sobre el estado de las copias de seguridad granulares.

Llegados a este punto, ya hemos revisado todas las opciones que nos ofrece la administración central en cuanto a backups granulares. Sin embargo, muchos de vosotros os estareis preguntando cómo se realizan los restores granulares. Pues bien, de forma un tanto incomprensible (da la impresión que les faltó tiempo para implementarlo en la administración central), estas acciones de restore granular sólo pueden realizarse mediante comandos PowerShell. Bien pensado también podría ser una estrategia para obligarnos a familiarizarnos con esta herramienta. No digo que no me guste PowerShell (es realmente brillante), pero incluir opciones de Backup en la Administración Central y no las de Restore es como dejar una película a medias, ¿No creeis?. En fin, sea como sea, los parámetros para las restauraciones granulares son los siguientes:

Para colecciones de sitios:
Restore-SPSite -Identity <URL de la colección de sitios> -Path <Ruta del fichero> [-DatabaseServer <Nombre del servidor de la BD>] [-DatabaseName <Nombre de la BD de contenido>] [-HostHeader <Cabecera Host>] [-Force] [-GradualDelete] [-Verbose]

Para sitios, listas y bibliotecas:
Import-SPWeb -Identity <URL del sitio> -Path <Ruta del Fichero> [-Force] [-NoFileCompression] [-Verbose]

En la restauración via PowerShell para sitios, hay que tener en cuenta que las plantillas origen y destino del sitio, deben ser coincidentes, ya que si estas no fueran iguales, la operación nos daría error.

En la restauración via PowerShell para listas y bibliotecas, hay que tener en cuenta que el comportamiento por defecto de la instrucción es sobreescribir los items repetidos en el destino con los items del origen. Si tuvieramos el caso de que no queremos sobreescribir los ítems ya existentes y únicamente queremos añadir los no coincidentes, deberíamos agregar el parámetro -updateversion ignore.

Y esto es todo en cuanto a las nuevas posibildades de Backups y Restores que SharePoint 2010 nos brinda, como veis no son pocas y además, combinadas con las posibilidades de Scripting de PowerShell, podremos realizar procesos automatizados, programados (schedules) y realmente completos y adecuados a nuestras necesidades. Otro gran paso adelante en SharePoint 2010. Backups-Restores... ¿Quien dijo "miedo"?

:-D

Consultar el post anterior de la serie: MSS 2010: Backups-Restores (I). Conjunto de Servidores

3 comentarios:

Sergio dijo...

Hola, estoy intentando realizar una copia de seguridad de una aplicación web en Sharepoint 2010, el caso es que en el mismo servidor tengo como 2 rutas de acceso a aplicaciones, digamos que una es http://sps2010/ que es la que crea por defecto sharepoint y la otra es http://sps2010:83/ que es otra que cree yo en otro puerto.

El caso es que cuando me voy a la administración central de sharepoint e intento hacer una copia de la segunda aplicación web (la que cree yo en el puerto 83), no me sale como opción para elegirla ya que solo me sale la que me creo sharepoint por defecto.

También he probado realizar la copia de seguridad mediante powershell como indica e la siguiente página:

http://technet.microsoft.com/es-es/library/ee748609.aspx#section1

Pero me da el siguiente error:

He ejecutado esto:

PS C:\> Backup-SPSite -Identity http://sps2010:29748/AN-Intranet -Path C:/backup
/AN-Intranet.bak -Force -UseSqlSnapshot -Verbose

El error es el siguiente:
DETALLADO: Saliendo del método BeginProcessing de Backup-SPSite.
Backup-SPSite : No se encuentra un objeto SPSite con Id or Url: http://sps2010:
29748/AN-Intranet.
En línea: 1 Carácter: 14
+ Backup-SPSite <<<< -Identity http://sps2010:29748/AN-Intranet -Path C:/backu
p/AN-Intranet.bak -Force -UseSqlSnapshot -Verbose
+ CategoryInfo : InvalidData: (Microsoft.Share...mdletBackupSite:
SPCmdletBackupSite) [Backup-SPSite], SPCmdletPipeBindException
+ FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletBackupSi
te

Si alguien sabe algo por favor que me diga, muchas gracias.

Ignasi Tebé Tena dijo...

Buenas, el comando es correcto, pero seguramente alguno de los parámetros no lo es. "http://sps2010:29748/AN-Intranet" ¿es una colección de sitios? y si es así, "C:/backup" ¿Es una carpeta compartida? Fíjate que en el formato que especifica el post especifica \\NombreServidor\NombreCarpetaCompartida\NombreFichero.bak

Realmente, si la carpeta donde quieres guardar no està compartida o no tienes permisos con el usuario que estás haciendo el backup, te dará un error como el que estás comentando.

Saludos y suerte!

Anónimo dijo...

Hola,

Una duda sobre las exportacions e importaciones de sitios y listas. ¿Se mantienen los GUID del sitio original o se crean unos nuevos como pasa en 2007?

Muchas gracias,