Backup en Windows Server 2016 con PowerShell

Todos los administradores de sistemas en algún momento han tenido que lidiar con problemas de respaldos: desde los software de Backup que no funcionan o la falta de seguimiento de los trabajos. Ésto hace que al momento de requerir un respaldo en muchas oportunidades la respuesta sea negativa. Por todo lo anterior y más, es que he decidido escribir un pequeño artículo sobre como realizar el backup en Windows Server 2016.

Dentro de las características que ofrece Windows Server 2016 (y también presente en versiones anteriores), siendo una de las más importantes creo yo, es la capacidad de realizar respaldos o Backups de nuestros servidores. Si bien la mayoría de las empresas hoy por hoy deben contar con una solución para obtener copias de seguridad, no todo el mundo sabe que se puede utilizar el mismo Windows Server para este fin y sin costo alguno. Por ello hoy vamos a ver como trabajar con esta feature y como no, desde nuestro querido PowerShell, para no perder la costumbre.

Backup en Windows Server 2016 con PowerShell

Partimos desde la necesidad de conocer si tenemos habilitada o no esta característica en nuestro servidor a respaldar, por ello debemos ejecutar el siguiente comando para obtener la respuesta:

Get-WindowsFeature | ? {$_.DisplayName -match "Backup"}

Obteniendo como resultado (si no está habilitada) la siguiente imagen:

Backup en Windows Server 2016

Para habilitar el rol de Windows Server Backup en el servidor que nos encontramos trabajando, tenemos que ejecutar la siguiente línea de código:

Add-WindowsFeature -Name Windows-Server-Backup

Luego de finalizado el proceso, si volvemos a ejecutar el primer comando, en la columna Install State debe de aparecer Installed. Teniendo la característica habilitada deberemos de configurar la política que ejecutará los trabajos.

Cómo creamos la política que gestionará nuestros trabajos de backup? Muy fácil, debemos ejecutar:

$Policy = New-WBPolicy

Este procedimiento pretende tomar como destino (de los archivos de backup) una unidad de red, así que antes de continuar con los siguientes pasos tenemos que tener la carpeta destino ya compartida y con los permisos de escritura.

Continuando con el proceso tenemos que setear los parámetros en la política para que pueda recuperar backups del tipo bare metal y el componente system state:

    
  $Policy | Add-WBBareMetalRecovery
  $Policy | Add-WBSystemState

Agrego los discos críticos como volúmenes para respaldar en el servidor:

$Volumes = Get-WBVolume -CriticalVolumes
  Add-WBVolume -Policy $Policy -Volume $Volumes

Se define el destino de los respaldos, en este caso, voy a utilizar un recurso compartido de red (el servidor “” y la carpeta compartida “BKP”):

$BackupLocation = New-WBBackupTarget -NetworkPath "\\<serverName>\BKP" -Credential
  Add-WBBackupTarget -Policy $Policy -Target $BackupLocation

Defino la programación, en este ejemplo quiero que se realice en 10 minutos, por lo que agrego:

Set-WBSchedule -Policy $Policy -Schedule ([datetime]::Now.AddMinutes(10))

Y por último me resta iniciar el trabajo

Start-WBBackup -Policy $Policy

Si todo lo anterior se ejecutó sin problemas, en 10 minutos comenzará a respaldar el servidor.

Bloque de código

A continuación comparto el bloque de código todo junto, comentado y agrego al inicio una parte lógica para que compruebe si la característica de Windows Backup está habilitada (en caso contrario, va a realizar la instalación de la misma):

#Compruebo si la feature BackUp esta habilitada, en caso contrario la habilito.
  $WSB = Get-WindowsFeature -Name Windows-Server-Backup
  If ($WSB.Installed -ne "True") {
    Add-WindowsFeature -Name Windows-Server-Backup 
  }

  #Genero la política para el respaldo
  $Policy = New-WBPolicy

  #Agrego los parámetros necesarios
  $Policy | Add-WBBareMetalRecovery
  $Policy | Add-WBSystemState

  #Agrego los discos a respaldar
  $Volumes = Get-WBVolume -CriticalVolumes
  Add-WBVolume -Policy $Policy -Volume $Volumes

  #Agrego el destino, en este caso el recurso de red compartido BKP en Server
  $BackupLocation = New-WBBackupTarget -NetworkPath "\\<serverName>\BKP"
  Add-WBBackupTarget -Policy $Policy -Target $BackupLocation

  #Defino la programación (10 minutos desde el comienzo del Job)
  Set-WBSchedule -Policy $Policy -Schedule ([datetime]::Now.AddMinutes(10))

  #Inicio el Job
  Start-WBBackup -Policy $Policy

Happy scripting!

Comments