Backups Sharepoint – Tareas Programables en Windows

Me gustaría compartir con ustedes una forma de realizar backups automáticamente para nuestros sitios Sharepoint y del servidor completo. Siguiendo los post de mi buen amigo Héctor Insua (SharePoint Backup Script y SharePoint Backup/Restore/Availability/Scripts) donde nos deja los scripts para hacer backups, lo que hice fue tomando estos ejemplos extenderlos a mi realidad y así modificarlos para poder tener backups semanales de los sitios que queremos y backups completos e incrementales del servidor.

Vamos a ver el código del script donde realizamos el Backup de un sitio de Sharepoint o WSS en una ubicación. Este backup lo que hace es crear toda la ruta de directorios necesario para dejar el backup completo, para crear los directorios se basa en la fecha en el cual se correrá el mismo y después creara el nombre del archivo con extensión “bkp” utilizando la misma convención. En la sección 1 podemos ver el código completo del script que nos respaldara un sitio de Sharepoint utilizando el comando STSADM.

[Sección 1]

"""""
‘Comienza Script 
""""""
‘Declaración de varibles.
Dim fso, f, fspec 
Dim yr, mo, dt
Dim fileNameBkp, nameFolder, bkFolder

Dim url
url = "http://<servidor>:<puerto>/" ‘Acá deben colocar la url a la colección de 
‘que desean respaldar.

Dim nameBackUp
nameBackUp = "DesarrolloSiderys" ‘Nombre del archivo que se creara.

yr = Year(Now) ‘Obtengo el año.

‘Obtengo el mes
mo = Month(Now) 
If mo < 10 Then 
mo = "0" & mo 
End If

‘Obtengo el año
dt = Day(Now) 
If dt < 10 Then 
dt = "0" & dt 
End If

‘Nombre completo del archivo "bkp" que se va a crear.
fileNameBkp = nameBackUp & dt & mo & yr & ".bkp"

‘Se instancia un objeto para el manejo del sistema de archivos.
Set fso = CreateObject("Scripting.FileSystemObject"

‘Nombre de la carpeta donde se desar colocar el backup.
‘Notar que se esta usando el día, mes y año creados anteriormente.
nameFolder = "H:Respaldos" & dt & mo & yr 

‘Se controla que exista la carpeta, si no existe se crea 
If Not fso.FolderExists(nameFolder) Then
Set f = fso.CreateFolder(nameFolder)
End If

‘A la carpeta creada se le concatena un Sub-directorio.
‘Esto es Así por si queremos colocar otros tipos de respaldos
‘en la carpeta de respaldos creada para ese día.
nameFolder = nameFolder & "Sharepoint"

‘Chequeamos si existe el Sub-directorio, si no existe lo creamos.
If Not fso.FolderExists(nameFolder) Then
Set f = fso.CreateFolder(nameFolder) 
bkFolder = f.Path 
Else
bkFolder = nameFolder
End If 

‘Creamos la ruta completa para pasarsela al comando STSADM
fileNameParameter = bkFolder & "" & fileNameBkp

‘Creamos un objeto para ejecutar el comando STSADM
‘Le asignamos la ruta completa para poder ejecutar el comando STSADM
Set objShell = CreateObject("WScript.Shell"
objShell.CurrentDirectory = "C:Archivos de programaArchivos comunesMicrosoft Sharedweb server extensions12BIN"

‘Ejecutamos el comando pasandole los parametros recien creados.
objShell.Exec ("STSADM.exe -o backup -url " & url & " -filename " & fileNameParameter)

Ahora vamos a ver el código del script que nos permitirá realizar un backup completo de nuestro servidor Sharepoint la primera vez que se corra y todas las demás veces nos hará una backup por la diferencia. Es decir, la primera vez que corramos el comando “STSADM.exe -o backup –directory <Ruta> -backupmethod Full” nos ejecutara un backup completo, pero las sucesivas veces nos ejecutar un respaldo por la diferencia. Esta funcionalidad es igual a la que se encuentra en la administración central de Sharepoint, la cual debemos correr a demanda cada vez que necesitemos hacer un backup, la idea del script es programarlo y que se ejecute solo. Debemos tener en cuenta que si la base de datos se encuentra en el mismo servidor donde está instalado Sharepoint entonces podremos usar rutas del tipo “C:”, pero si la base de datos se encuentra en otro servidor entonces la ruta deberá ser la de un recurso compartido de la red “\Carpeta”. En la sección 2 vemos el código completo para realizar dicha tarea.

[Sección 2]

""""""
‘Comienzo Script 
""""""

Dim fso, f, fspec 
Dim backupmethod, destFolder, bkFolder

‘Carpeta donde se realizaran los backups
destFolder = "H:RespaldosSharepoint_Incremental"

Sub-Directorio para el servidor que estemos respaldando
bkFolder = "NombreServidor"
destFolder = destFolder & "" & bkFolder

Set fso = CreateObject("Scripting.FileSystemObject"

‘Controlamos que no exista la carpeta, si no existe la creamos
‘ y establecemos que tipo de backup vamos a realizar "Full" si no
‘ existe, se asume que es la primera vez o "Differential" si existe
If Not fso.FolderExists(destFolder) Then
Set f = fso.CreateFolder(destFolder)
backupmethod = " -backupmethod full"
Else
backupmethod = " -backupmethod Differential"
End If

‘Creamos un objeto para ejecutar el comando STSADM
‘Le asignamos la ruta completa para poder ejecutar el comando STSADM
Set objShell = CreateObject("WScript.Shell"
objShell.CurrentDirectory = "C:Archivos de programaArchivos comunesMicrosoft Sharedweb server extensions12BIN"

‘Ejecutamos el comando pasandole los parametros recien creados.
objShell.Exec ("STSADM.exe -o backup -directory " & destFolder & backupmethod)

 

Una vez creado los script lo que vamos hacer ahora es programarlos en nuestro servidor para que se ejecuten como nosotros necesitemos. En mi caso, el script de la sección 1 que nos respalda una colección de sitios completa lo programamos cada una semana y el script de la sección 2 lo programamos para que se ejecute diariamente, con lo cual tendremos un backup día a día de nuestro servidor Sharepoint. Debemos considerar el espacio en disco que esto nos va a generar y la ubicación de destino debe contar con el espacio suficiente para realizar dicha tarea, más si nuestro servidor Sharepoint tiene mucho uso. Mi recomendación es dedicar un disco duro en el servidor o en un servidor de archivos para respaldos. Para acceder a la programación de tareas del servidor tenernos que ir al panel de control como podemos ver en la imagen 1.

[Imagen 1]
clip_image002

Al seleccionar “Agregar tarea programada” se nos abrirá un wizard para la creación de la programación de la tarea. En la imagen 2 podemos ver el primer paso.

[Imagen 2]
clip_image003

Presionamos siguiente para comenzar a programar nuestra tarea. En la imagen 3 vemos el siguiente paso.

[Imagen 3]
clip_image004

Acá debemos seleccionar el programa que queremos que se ejecute, en nuestro caso presionamos él botón “Examinar” y buscamos donde están nuestros archivos scripts “vbs” y lo seleccionamos. Una vez cargado presionamos siguiente y pasamos al próximo paso como podemos ver en la imagen 4.

[Imagen 4]
clip_image005

Lo que tenemos que hacer acá es seleccionar la frecuencia con la que queremos que se ejecute nuestro script, en el ejemplo que estamos armando seleccione “Semanalmente”, pero eso dependerá de las necesidades que tengan. Una vez seleccionada la frecuencia presionamos siguiente para ir al próximo paso como se puede ver en la imagen 5.

[Imagen 5]
clip_image006

En este paso vamos a seleccionar que día de la semana queremos que se ejecute el script y a qué hora. En este caso seleccionamos el día domingo a las 2:00 PM por entender que el servidor estará liviano de tareas y nadie estará trabajando en ese momento (Espero que se encuentren comiendo una rica pasta con un buen vino, un domingo a las 2:00 PM). Una vez cargado el día y la hora presionamos el botón siguiente para ir al próximo paso como podemos ver en la imagen 6.

[Imagen 6]
clip_image007

En este paso debemos establecer las credenciales con las cuales se va a ejecutar el script, recomiendo que sea usuario con privilegios de administrador, si no puede ser un administrador, entonces asegúrense que el usuario que vamos a colocar cuenta con los permisos necesarios para escribir en la ruta que tenemos configurada en el script. Una vez cargadas las credenciales, presionamos el botón siguiente y nos vamos al último paso, como podemos ver en la imagen 7.

[Imagen 7]
clip_image008

En este paso, corroboremos que toda la información introducida es correcta y si queremos abrir el cuadro de dialogo con las propiedades avanzada de la tarea programada, solo tendremos que marcar la casilla de verificación como se ve en la imagen. Una vez estamos seguros que está todo bien presionamos el botón finalizar para confirmar la programación y se nos abrirá la pantalla con la propiedades avanzadas como podemos ver en la imagen 8.

[Imagen 8]
clip_image009

En esta pantalla podemos modificar cada una de las propiedades introducidas e incluso programar comportamiento adicional en la sección configuración.

Esta forma de realizar backup programables es muy útil si queremos estar seguros que los mismos siempre se ejecuten en determinado momento.