Cómo hacer copias de seguridad y restaurar sitios web y configuraciones de IIS

Sí, manipular las copias de seguridad de IIS puede ser un poco complicado, sobre todo si intentas migrar información entre servidores o simplemente quieres estar seguro. A veces, te encontrarás con que tu sitio web no inicia o pierde la configuración repentinamente, y saber cómo hacer una copia de seguridad correcta de todo (archivos, configuraciones, certificados) te ahorra muchos dolores de cabeza más adelante. Esta guía explica algunos métodos que han funcionado en configuraciones reales, incluyendo el uso de herramientas integradas como appcmd, PowerShell e incluso msdeploy, para que no te quedes atascado si algo sale mal.

Cómo realizar copias de seguridad y restaurar configuraciones de IIS en Windows Server

Realizar copias de seguridad de IIS en Windows Server

Hacer una copia de seguridad de IIS correctamente implica recuperar los archivos de tu sitio, los certificados SSL y la configuración, porque, siendo sinceros, si una parte falla, todo lo demás podría irse al traste.¿Para qué invertir tanto tiempo en arreglarlo manualmente cuando hay formas sencillas de clonar tu configuración? En algunos servidores, una copia de seguridad sencilla funciona bien, pero en otros, especialmente en entornos más complejos, necesitarás una instantánea completa.

Por ejemplo, un problema común es copiar todo manualmente (sí, solo copiar %SystemDrive%\inetpub\wwwroot para los archivos estáticos del sitio), pero esto no incluye los certificados SSL ni la configuración de IIS, que son igual de importantes. Para mitigar esto, esto suele ser útil:

Paso 1: Realice una copia de seguridad de los archivos del sitio web de IIS

  • Simplemente copie toda la carpeta inetpub\wwwroot o, mejor aún, utilice Windows Server Backup para incluir este directorio en su plan de respaldo.
  • En PowerShell, puedes crear un script para la copia de seguridad de la siguiente manera:
# Install Windows Server Backup if not installed Install-WindowsFeature -Name Windows-Server-Backup # Backup inetpub directory to a network share wbadmin start backup –backupTarget:\\srv-backup1\backup -include:c:\inetpub\wwwroot -vsscopy

De esta forma, obtienes una copia completa de los archivos estáticos de tu sitio. A veces, en ciertas configuraciones, la primera vez parece fallar, pero volver a ejecutarlo o reiniciarlo suele ser útil. No siempre es totalmente fiable, pero es mejor que hacerlo todo manualmente.

Paso 2: Exportar certificados SSL

  • Obtenga la lista de certificados SSL con netsh http show sslcert. Este comando muestra todos los enlaces SSL, por si acaso.
  • Para exportar los certificados, PowerShell viene al rescate:
dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system. IO. File]::WriteAllBytes( "\\srv-backup1\backup\$($_. Subject).pfx", ($_. Export('PFX', 'secret')) ) }

Esto crea archivos PFX con sus claves SSL. Tenga en cuenta que, en algunos casos, es posible que la exportación no sea perfecta, así que verifique que los certificados descargados funcionen correctamente al importarlos posteriormente. Además, asegúrese de que la ubicación de la copia de seguridad sea segura; las claves privadas deben manejarse con cuidado.

Paso 3: Copia de seguridad de la configuración de IIS (configuración)

Esto suele pasarse por alto, pero es crucial. La herramienta integrada appcmd lo facilita. Simplemente abra un símbolo del sistema de administrador y cambie el directorio:

cd c:\Windows\system32\inetsrv

Luego, ejecute el comando de copia de seguridad:

appcmd add backup srv1-iis-backup-2022_03_10

Encontrarás una nueva carpeta en c:\Windows\system32\inetsrv\backup que contiene todas tus configuraciones, incluyendo applicationHost.config, administration.config y otros archivos XML importantes. Simplemente copia toda la carpeta a la ubicación de tu copia de seguridad. Es fácil, pero no olvides hacerlo regularmente; Windows suele sobrescribir o guardar automáticamente estas copias de seguridad para que puedas revertirlas si es necesario.

En servidores más nuevos (2016/2019), también puede usar el cmdlet Backup-WebConfiguration de PowerShell :

Backup-WebConfiguration -Name MyBackup202203

Este comando simplifica la copia de seguridad y almacena la configuración en la carpeta de copia de seguridad predeterminada, normalmente $env:Windir\System32\inetsrv\backup. Resulta útil si prefiere usar scripts en lugar de comandos.

Restaurar una configuración de IIS en un host de servidor Windows diferente

Supongamos que tiene esa copia de seguridad almacenada en algún lugar (quizás en un recurso compartido de red o en un disco externo) y ahora quiere restaurarla en otro lugar. El proceso no es complejo, pero requiere cierta atención.

Primero, copie la carpeta de respaldo a c:\windows\system32\backup en el nuevo servidor. Confirme que la copia de seguridad esté visible en la lista:

appcmd list backup

Si aparece tu copia de seguridad, puedes restaurarla con:

appcmd restore backup /stop:true srv1-iis-backup-2022_03_10

La opción /stop:true indica a IIS que se apague antes de aplicar la configuración, lo que suele ayudar a evitar errores. Al finalizar, su sitio debería volver a estar con toda su configuración anterior intacta.

Alternativamente, también puedes restaurar con PowerShell si has utilizado Backup-WebConfiguration :

Restore-WebConfiguration -Name srv1-iis-backup-2022_03_10

Si desea eliminar copias de seguridad antiguas (por ejemplo, limpiar un poco la casa), puede ejecutar:

appcmd.exe delete backup BackupName
Atención: Asegúrate de que las versiones de IIS coincidan en ambos servidores. Puedes comprobarlo en el registro:

get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring, versionstring

Además, asegúrese de que todos los grupos de aplicaciones personalizados o certificados SSL se importen y estén disponibles en el nuevo servidor. De lo contrario, su sitio restaurado podría quedar inutilizado, sin funcionar correctamente.

Si te interesa la automatización, la herramienta msdeploy es una opción excelente. Puedes comprimir todos tus sitios y configuraciones en un equipo e implementarlos en otro, o incluso hacer copias de seguridad incrementales.

msdeploy -verb:sync -source:webServer, computername=192.168.100.112 -dest:package=c:\Backup\IIS\server1_iis_backup.zip

O simplemente haga una copia de seguridad de sitios individuales/archivos estáticos:

msdeploy –verb:sync –source:contentPath="site_name.com", computername=192.168.100.112 -dest:package=c:\Backup\IIS\site_name.zip

A veces es un poco excesivo, pero si quieres una copia completa, esto es lo que he visto funcionar en situaciones reales. Simplemente prepárate para importar certificados y comprobar los permisos después, porque, claro, Windows tiene que complicarlo más de lo necesario.

Resumen

  • Copie los archivos de su sitio o utilice la Copia de seguridad de Windows Server para obtener %SystemDrive%\inetpub\wwwroot.
  • Exportar certificados SSL con PowerShell o netsh.
  • Realice una copia de seguridad de las configuraciones de IIS mediante appcmd o Backup-WebConfiguration de PowerShell.
  • Restaure las configuraciones con appcmd restore o Restore-WebConfiguration.
  • Considere msdeploy para realizar copias de seguridad completas del sitio o por lotes, especialmente si está migrando.
  • Verifique siempre la compatibilidad de la versión de IIS e importe los certificados SSL en el nuevo host.

Resumen

Hacer copias de seguridad de IIS puede parecer una tarea tediosa, pero una vez que se domina el uso de herramientas como appcmd, PowerShell o msdeploy, no es tan complicado. Es cierto que a veces la forma más sencilla es copiar archivos y configuraciones manualmente, pero la automatización y una exportación adecuada evitan dolores de cabeza en el futuro. Sinceramente, vale la pena configurar copias de seguridad programadas tanto para las configuraciones como para los certificados; nunca se sabe cuándo el servidor va a fallar. Ojalá esto ayude, o al menos ahorre tiempo si alguna vez necesita restaurar.