Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Introducción
En la versión 3 de Web Deploy se presenta una característica de copia de seguridad automática del lado del servidor para IIS 7 y versiones posteriores. Cuando las copias de seguridad automáticas están configuradas en el servidor y un usuario publica en un sitio mediante Web Deploy; primero hará una copia de seguridad del sitio activo y la almacenará en el servidor antes de confirmar los cambios del sitio. Si se produce un error durante la publicación por algún motivo o el usuario quiere restaurar una versión anterior de un sitio web, podrá hacerlo desde estas copias de seguridad sin implicar a un administrador del servidor. Un administrador del servidor debe habilitar y configurar esta característica antes de que un usuario final pueda usarla.
Cuándo se crean las copias de seguridad
Cuando Web Deploy detecta que un usuario está publicando con un proveedor contentPath, iisApp o appHostConfig, iniciará automáticamente una copia de seguridad (si está habilitada en el servidor). En muchos casos, estos proveedores también se incluyen en las publicaciones hechas con Web Matrix y Visual Studio. Este es un ejemplo de línea de comandos de una sincronización que iniciará una copia de seguridad en "remoteComputerName" mediante Web Deploy Agent.
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName>
Si el proveedor de origen es un manifiesto, Web Deploy inspeccionará todos sus proveedores para determinar si alguno es un proveedor contentPath, iisApp o appHostConfig. Si es así, iniciará una copia de seguridad para TODOS los proveedores (consulte la sección sobre "Problemas conocidos y limitaciones" para las excepciones) en el manifiesto. Sin embargo, si hay rutas de acceso de proveedor en conflicto (por ejemplo, si una apunta al sitio "foo" y la otra a la "barra" del sitio), Web Deploy no hará una copia de seguridad.
Qué contiene una copia de seguridad
De forma predeterminada, Web Deploy usará los proveedores especificados para la publicación (excepto setAcl que nunca se incluye) para crear la copia de seguridad. Por lo tanto, si se publica con un proveedor iisApp y dbFullSql, Web Deploy hará una copia de seguridad de los proveedores iisApp y dbFullSql en el servidor. Esto incluye todo el contenido y la configuración que pertenecen a la aplicación web junto con el script de base de datos que se puede usar para volver a publicar la aplicación web. Puede cambiar este comportamiento predeterminado modificando la configuración de copia de seguridad de ExcludedProviders o especificando reglas de omisión antes de hacer una publicación.
Estas copias de seguridad son paquetes de Web Deploy válidos que se pueden copiar y usar con Web Deploy en cualquier servidor IIS compatible.
Configuración de la característica copia de seguridad automática en el servidor (para administradores de servidores)
Para proporcionar la característica de copia de seguridad automática a los usuarios, un administrador del servidor debe aprovisionar espacio en el servidor donde se pueden almacenar estas copias de seguridad. Este espacio se puede ubicar físicamente en el servidor o puede estar en un recurso compartido de red accesible desde el servidor.
La cantidad de espacio necesario dependerá del tamaño de las aplicaciones individuales y del número de copias de seguridad que planea almacenar en el servidor. Si quiere controlar el espacio tomado por las copias de seguridad, debe usar crear una carpeta independiente para cada sitio y usar el Administrador de recursos del servidor de archivos (FSRM) para limitar las cuotas de carpetas individuales. Como procedimiento recomendado de seguridad, también debe incluir estas carpetas para que cada usuario tenga acceso de lectura y escritura solo a su carpeta.
Las copias de seguridad se pueden habilitar globalmente en el servidor para que todos los sitios puedan sacarle partido o es posible configurarlas de forma individual.
Configuración de las opciones de la copia de seguridad en el servidor para uso global automáticamente mediante PowerShell
El script de PowerShell para configurar la característica Copia de seguridad en el nivel de servidor se puede encontrar en %programfiles%\IIS\Microsoft Web Deploy V3\scripts\BackupScripts.ps1
. Para cargarlo, simplemente vaya a ese directorio en PowerShell y ejecute:
. .\BackupScripts.ps1
De este modo se cargarán las siguientes funciones en la sesión que puede usar para configurar las copias de seguridad.
- TurnOn-Backups: activa o desactiva las copias de seguridad de todo el servidor.
- Configure-Backups: establece la configuración predeterminada de la copia de seguridad específica del servidor o del sitio.
- Configure-BackupSettingsProvider: controla la configuración del servidor para el control que tendrá un administrador de sitio sobre el comportamiento de la copia de seguridad.
- Get-BackupSettings: consulta la configuración específica del sitio o del servidor
- Reset-BackupSettings: restablece la configuración específica del sitio o del servidor
Función TurnOn-Backups:
Permite que un administrador del servidor active o desactive las copias de seguridad en un ámbito SERVER, sin sobrescribir la configuración específica del sitio. Las copias de seguridad están desactivadas de manera predeterminada. Incluso después de activar las copias de seguridad, deben estar "habilitadas" en el nivel de servidor o sitio para que se hagan.
# Turns on all backup functionality
TurnOn-Backups -On $true
# Turns off all backup functionality
TurnOn-Backups -On $false
Configure-Backups:
Permite a un administrador del servidor configurar el comportamiento de la copia de seguridad predeterminado en el ámbito específico de SERVER o SITE. Si un administrador especifica una configuración en el ámbito del servidor y un sitio ya ha especificado una configuración específica del sitio, Web Deploy preferirá la configuración específica del sitio a la del servidor. Si un administrador del servidor quiere que la configuración del servidor tenga preferencia, debe restablecer la configuración de copia de seguridad del sitio, lo que hace que el sitio herede automáticamente la opciones del servidor.
# Changes default global backup behavior to enabled
Configure-Backups -Enabled $true
# Changes default backup behavior for site "foo" to enabled
Configure-Backups -SiteName "foo" -Enabled $true
# Changes the path of where backups are stored to a sibling directory named "siteName_snapshots".
# For more information about path variables, see the "backupPath" attribute in the section
# "Configuring Backup Settings on the Server for Global usage manually in IIS Config"
Configure-Backups -BackupPath "{SitePathParent}\{siteName}_snapshots"
# Configures default backup limit to 5 backups
Configure-Backups -NumberOfBackups 5
# Configures sync behavior to fail if a sync fails for any reason
Configure-Backups -ContinueSyncOnBackupFailure $false
# Adds providers to skip when performing a backup
Configure-Backups -AddExcludedProviders @("dbmysql","dbfullsql")
Configure-BackupSettingsProvider:
Los administradores del sitio pueden modificar la configuración de copia de seguridad específica del sitio mediante BackupSettingsProvider con Web Deploy. Esta función permite a un administrador del servidor controlar exactamente qué configuración puede configurar un administrador de sitio.
# Allows a site administrator to enable backups and set the number of backups at the site level
Configure-BackupSettingsProvider -CanSetEnabled $true -CanSetNumBackups $true
# Allows a site administrator to control which providers they want to skip in a backup, as
# well as whether they can continue a sync after a backup failure
Configure-BackupSettingsProvider -CanSetContinueSyncOnBackupFailure $true -CanAddExcludedProviders $true
Get-BackupSettings
Consulta la configuración del servidor o de una copia de seguridad específica de sitios.
# Grabs the global default backup settings
Get-BackupSettings
# Grabs a sites-specific backup settings
Get-BackupSettings -SiteName "foo"
Reset-BackupSettings
Restablece el servidor o la configuración de la copia de seguridad de un sitio. Si restablece una configuración de copia de seguridad de sitios, heredará automáticamente de la configuración de copia de seguridad de los servidores.
# Resets the global default backup settings
Reset-BackupSettings
# Resets a sites backup settings
Reset-BackupSettings -SiteName "foo"
Configuración de las opciones de las copias de seguridad en el servidor para uso global manual en la configuración de IIS
Configuración de una copia de seguridad global
La siguiente configuración de copia de seguridad global se puede configurar directamente en el sistema de configuración de IIS en %windir%\system32\inetsrv\config\applicationhost.config
.
enabled: (valor predeterminado = "false") Controla si las copias de seguridad están activadas o no.
backupPath : (valor predeterminado = "{sitePathParent}{siteName}_snapshots") Donde en el servidor se almacenarán las copias de seguridad. También admite las variables de reemplazo de ruta de acceso para "{sitePathParent}" y "{siteName}", que se determinan en tiempo de ejecución.
- sitePathParent: la ruta de acceso del archivo físico del elemento primario del contenido de los sitios. Por ejemplo, si la aplicación del sitio reside en
c:\inetpub\wwwroot\siteName
, sitePathParent seríac:\inetpub\wwwroot\
. - siteName: el nombre del sitio.
- sitePathParent: la ruta de acceso del archivo físico del elemento primario del contenido de los sitios. Por ejemplo, si la aplicación del sitio reside en
Ejemplo: El esquema predeterminado establece esta ruta de acceso a "{sitePathParent}{siteName}_snapshots" para que cada copia de seguridad se coloque en una carpeta del mismo nivel del contenido del sitio en lugar de dentro de ella.
ADVERTENCIA: Asegúrese de que backupPath no esté activo en la ruta de acceso de contenido de los sitios o las copias de seguridad se eliminarán en cada publicación.
- numberOfBackups: (valor predeterminado = "4") El número de copias de seguridad por sitio que se almacenan en el servidor. Cuando se haya creado el número máximo de copias de seguridad, se eliminará la más antigua.
- continueSyncOnBackupFailure: (valor predeterminado = "true") Permite a los usuarios producir un error en una sincronización o continuar una sincronización si una copia de seguridad no se puede completar por cualquier motivo.
- excludedProviders: (valor predeterminado = conjunto vacío) Lista de proveedores de Web Deploy que siempre se excluirán en una copia de seguridad. Por ejemplo, si las copias de seguridad de bases de datos se administran por separado en su entorno, use esta opción para excluir las copias de seguridad de base de datos como parte de las copias de seguridad de Web Deploy excluyendo dbFullSQLProvider. Para obtener más detalles, consulte la sección "Controlar qué contiene una copia de seguridad".
Nota:
Aunque Web Deploy le permitirá técnicamente hacer copias de seguridad de casi todos los proveedores, hay algunos proveedores que no se pueden restaurar de forma significativa debido a su naturaleza. Básicamente, todos los proveedores que son de "solo establecimiento" y no de "sincronización" se incluyen en esta categoría. Esta es una lista de proveedores integrados que se recomiendan agregar a la configuración ExcludedProviders:
- appHostAuthOverride
- appPoolEnable32Bit
- appPoolNetFx
- appPoolPipeline
- createApp
- setAcl
- DBSqlPackage (no está instalado de manera predeterminada con Web Deploy, pero aparece aquí porque no se admite actualmente con la característica de copia de seguridad)
- backupSettingsProvider: (valor predeterminado: todos los valores de atributo son "false"). Proporciona un control de administrador del sistema sobre qué configuración de copia de seguridad puede establecer un administrador de sitio web. Puede permitir que los administradores del sitio web controlen cualquiera de los valores anteriores "habilitado", "numberOfBackups", "continueOnBackupFailure" y "excludedProviders" para un sitio. Se puede hacer estableciendo las propiedades "canSetEnabled", "canSetNumberOfBackups", etc. en true, tal como se especifica en el ejemplo siguiente.
Puede encontrar información detallada sobre esta configuración y los valores permitidos en BackupManagerSchema %windir%\system32\inetsrv\config\schema\BackupManagerSchema.xml
del sistema de configuración de IIS.
A continuación se muestra una configuración de ejemplo en la que se puede agregar en <system.webServer>
(consulte el esquema completo para obtener más detalles). No es necesario especificar todas las opciones siguientes, ya que todas tienen la configuración predeterminada especificada en el esquema, pero se especifican aquí para mostrarse como ejemplo.
<wdeploy>
<backup enabled="true"
numberOfBackups="2"
backupPath="{sitePathParent}\{siteName}_siteBackups"
continueSyncOnBackupFailure="false">
<excludedProviders>
<provider name="dbFullSql" />
</excludedProviders>
<backupSettingsProvider
canSetEnabled="true"
canSetNumberOfBackups="true"
canSetContinueSyncOnBackupFailure="true"
canSetExcludedProviders="true" />
</backup>
</wdeploy>
Supongamos que tenemos un sitio denominado "foo" que se encuentra en
c:\foo\wwwroot
en el servidor. La configuración anterior indica a Web Deploy que:
- Active un máximo de dos copias de seguridad en la característica BackupKeep.
- Almacene cada copia de seguridad en una carpeta en
c:\foo\foo\_siteBackups
. - No publique si se produce un error en la operación de copia de seguridad por algún motivo.
- Excluya la copia de seguridad de bases de datos SQL con el proveedor dbFullSql.
- Permita que los administradores del sitio web usen backupSettingsProvider para configurar los valores "habilitados", "numberOfBackups", "continueOnBackupFailure" y "excludedProviders" para su sitio.
Configuración de las opciones de la copia de seguridad en el servidor para sitios específicos
La característica de copia de seguridad automática también permite establecer una configuración específica del sitio especificando cada configuración de copia de seguridad mediante una etiqueta <location>
en el archivo applicationHost.config. Si no se especifica una configuración en la etiqueta de ubicación, se heredará de la configuración del servidor. Este es un ejemplo del aspecto que puede tener una configuración de copia de seguridad de un sitio:
<location path="siteName">
<system.webServer>
<wdeploy>
<backup enabled="true" numberOfBackups="4">
<excludedProviders>
<clear />
<provider name="dbfullsql" />
</excludedProviders>
</backup>
</wdeploy>
</system.webServer>
</location>
Si quiere permitir que los administradores del sitio puedan establecer su propia configuración, debe configurar los atributos "canSet*" del elemento BackupSettingsProvider en la configuración de copia de seguridad server, (no la configuración de copia de seguridad del sitio).
Consideraciones de seguridad para las copias de seguridad automáticas
Al almacenar estas copias de seguridad en el servidor, debe asegurarse de que cada usuario solo tiene acceso a su propio contenido. Web Deploy de forma predeterminada (durante una instalación completa) configura la regla de delegación BackupManager para asegurarse de que se suplanta como el usuario que publica al crear copias de seguridad. Esto implica que la cuenta de usuario de publicación también tendrá que tener privilegios de archivo de "escritura" en el directorio de copia de seguridad.
Si no quiere usar la identidad de los usuarios finales para crear sus copias de seguridad, elimine simplemente esta regla de delegación y Web Deploy usará la identidad del servicio WMSVC para escribir en el directorio de copia de seguridad.
Nota:
- Las reglas de delegación solo se aplican a los usuarios no administrativos que se conectan a través de WMSvc. Para los administradores (que se conectan a través del agente de Web Deploy), se usa su propia identidad.
- Si quiere configurar las reglas de delegación manualmente, ejecute nuestro script AddDelegationRules.ps1.
- La característica Copia de seguridad incluye dos nuevas reglas de delegación de proveedores (BackupSettings y BackupManager), como se muestra a continuación.
Configuración de las opciones de copia de seguridad de nivel de sitio en el servidor (para administradores de sitio/servidor)
Los administradores del servidor pueden elegir delegar parte de la administración de copias de seguridad en los administradores del sitio. Si se permite, los administradores del sitio pueden configurar el comportamiento de copia de seguridad para sus propios sitios.
Nota:
msdeploy.exe se encuentra en %programfiles%\IIS\Microsoft Web Deploy V3
Enumeración de la configuración de copia de seguridad del sitio: Haga un "volcado" al pasar el nombre del sitio al proveedor de backupSettings. La marca -xml también mostrará si la configuración se puede escribir o no.
msdeploy.exe -verb:dump -source:backupSettings=<siteName> -xml
Configuración de las opciones de copia de seguridad: Haga una "sincronización" al pasar el nombre del sitio, además de cualquier configuración que quiera cambiar.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,enabled="True",numberOfBackups=3
Nota:
El administrador del servidor debe permitir la delegación de esta configuración para poder cambiarla.
Control del comportamiento de errores: Puede controlar el comportamiento de si quiere que la publicación continúe o no en caso de error de copia de seguridad modificando la configuración de copia de seguridad "continueSyncOnBackupFailure". Si "continueSyncOnBackupFailure" está establecido en False y se produce un error en una copia de seguridad, se producirá un error en la publicación y no se modificará ningún contenido o base de datos del sitio.
Adición de un proveedor a la lista de proveedores que se excluirán de una copia de seguridad: Especifique una lista delimitada por punto y coma de proveedores. Puede usar la opción addExcludedProviders para anexar proveedores a la lista global.
msdeploy.exe -verb:sync -source:backupSettings -dest:backupSettings=<siteName>,addExcludedProviders="dbFullSql;dbMySql"
Restablecimiento de la configuración de copia de seguridad del sitio a los valores predeterminados del servidor: Haga una operación de "eliminación".
msdeploy.exe -verb:delete -dest:backupSettings=<siteName>
Publicación en un servidor habilitado para copia de seguridad (para desarrolladores web)
Creación automática de copias de seguridad
Cuando un usuario publica en un servidor habilitado para copias de seguridad mediante uno de los proveedores admitidos (iisApp, appHostConfig o contentPath), se hará automáticamente una copia de seguridad antes de que se apliquen los datos, siempre y cuando no se omita esta. No se requiere ninguna acción específica en la parte del usuario final.
Creación manual de una copia de seguridad
Un usuario puede forzar manualmente la creación de una copia de seguridad mediante el proveedor BackupManager, siempre que las copias de seguridad estén configuradas y habilitadas para que el sitio se publique. Hay dos métodos de crear una copia de seguridad manual.
Especificar una ruta de acceso del sitio de destino: Se hará una copia de seguridad sencilla de iisApp del sitio de destino.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=siteName
Especificar un archivo de manifiesto de origen: Esto le permitirá hacer una copia de seguridad de varios proveedores (es decir, iisApp, dbFullSql, etc.)
msdeploy.exe -verb:sync -source:backupManager=manifest.xml -dest:backupManager=siteName
Un ejemplo de un archivo de manifiesto simple para la segunda opción podría tener un aspecto similar al siguiente:
<?xml version="1.0" encoding="utf-8"?>
<m>
<iisApp path="siteName" />
<dbFullSql path="connectionString" />
</m>
Omisión de una copia de seguridad durante la publicación
Si un cliente quiere impedir que se haga una copia de seguridad, puede deshabilitarlas en el servidor como una configuración persistente mediante el proveedor BackupSettings o deshabilitar la ejecución de la regla de copia de seguridad en el servidor para cada publicación individual. Este es un ejemplo de cómo se deshabilita la regla de copia de seguridad de la ejecución durante una publicación:
msdeploy.exe -verb:sync -source:iisapp=<siteName> -dest:auto,computername=<remoteComputerName> -disablerule:BackupRule
Administración de copias de seguridad (para desarrolladores web o administradores de sitios)
El proveedor BackupManager ofrece a los clientes la capacidad de enumerar, restaurar y eliminar copias de seguridad. A continuación se muestran algunos ejemplos de cómo hacerlo:
Enumere copias de seguridad de un sitio: Haga un "volcado" para ver todas las copias de seguridad de un sitio
msdeploy.exe -verb:dump -source:backupManager=<siteName>
Restaure una copia de seguridad específica para un sitio: Haga una "sincronización" para aplicar una copia de seguridad
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>/<backupFileName>
Restaure la copia de seguridad más reciente de un sitio:
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true
Restaure la copia de seguridad más reciente de un sitio que también contiene una base de datos: Se supone que la copia de seguridad más reciente también tiene lugar para contener una copia de seguridad de base de datos. La configuración del proveedor connectionString se usa para conectarse a la base de datos que está restaurando y se necesita para restaurar cualquier copia de seguridad con una base de datos a menos que aplique una regla de omisión para omitir la restauración de la base de datos.
msdeploy.exe -verb:sync -source:backupManager -dest:backupManager=<siteName>,useLatest=true,connectionString=<connectionString>
Restaure la copia de seguridad más reciente de un sitio sin sobrescribir App_Data mediante Skips:
msdeploy.exe -verb:sync -source:backupmanager -dest:backupmanager=<siteName>,uselatst=true -skip:xpath=dirPath[@path='App_Data']
Elimine una copia de seguridad de un sitio:
msdeploy.exe -verb:delete -dest:backupManager=<siteName>/<backupFileName>
Limitaciones y problemas conocidos:
Hay varios escenarios en los que Web Deploy no hace automáticamente una copia de seguridad incluso si está habilitada en el servidor:
- El cliente publica mediante una versión anterior de Web Deploy a V3 RC.
- El servidor no tiene instalado por lo menos Web Deploy V3 RC.
- Se especifica más de una base de datos en un manifiesto: Web Deploy solo admite una copia de seguridad de una base de datos única por publicación.
- La ruta de acceso del proveedor que está usando no es una ruta de acceso de sitio relativa: El proveedor contentPath acepta rutas de acceso de archivo físicas, así como rutas de acceso de sitio relativas. Si se especifica una ruta de acceso física, Web Deploy no contará ese proveedor para iniciar la copia de seguridad. El proveedor apphostConfig acepta una ruta de acceso vacía. Si se especifica una ruta de acceso vacía, Web Deploy no hará una copia de seguridad.
- Rutas de acceso relativas en conflicto en un manifiesto: Si hay varios proveedores en un manifiesto con rutas de acceso de sitio relativas en conflicto, Web Deploy no hará una copia de seguridad. Por ejemplo, si va a publicar con varios proveedores de iisApp en sitios diferentes: uno que apunta al sitio "foo" mientras que el otro apunta a la "barra" del sitio, Web Deploy no hará una copia de seguridad.
Otros problemas conocidos:
- Instalar Web Deploy V2 interrumpe la regla de delegación BackupSettings: Si instala V2 después de V3, la regla de delegación BackupSettings ya no funcionará si se configuró para ejecutarse con el usuario WDeployConfigWriter predeterminado. Para solucionarlo, simplemente ejecute el script AddDelegationRule.ps1 de V3 (ubicado en
%programfiles%\IIS\Microsoft Web Deploy\Scripts
) desde PowerShell.