Copia de seguridad de un recurso compartido de archivos de Azure mediante PowerShell
En este artículo se describe cómo usar Azure PowerShell para realizar copias de seguridad de un recurso compartido de archivos de Azure Files mediante el almacén de Recovery Services de Azure Backup.
En este artículo se explica lo siguiente:
- Configure PowerShell y registre el proveedor de Recovery Services.
- Cree un almacén de Recovery Services.
- Configurar la copia de seguridad de un recurso compartido de archivos de Azure.
- Ejecutar un trabajo de copia de seguridad.
Antes de comenzar
Más información sobre los almacenes de Recovery Services.
Revise la referencia de cmdlet de Az.RecoveryServices en la biblioteca de Azure.
Revise la siguiente jerarquía de objetos de PowerShell para Recovery Services:
Configurar PowerShell
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Nota
Azure PowerShell actualmente no admite directivas de copia de seguridad con programación por horas. Use Azure Portal para sacar provecho de esta característica. Más información
Configure PowerShell como sigue:
Descargue la versión más reciente de Azure PowerShell.
Nota
La versión mínima de PowerShell necesaria para realizar la copia de seguridad de recursos compartidos de archivos de Azure es Az.RecoveryServices 2.6.0. Si usa la versión más reciente, o al menos la versión mínima, evitará tener problemas con los scripts existentes. Instale la versión mínima mediante el siguiente comando de PowerShell:
Install-module -Name Az.RecoveryServices -RequiredVersion 2.6.0
Busque los cmdlets de PowerShell de Azure Backup con este comando:
Get-Command *azrecoveryservices*
Revise los alias y cmdlets de Azure Backup, Azure Site Recovery y el almacén de Recovery Services. Este es un ejemplo de lo que puede ver. No es la lista completa de los cmdlets.
Inicie sesión en su cuenta de Azure mediante el cmdlet Connect-AzAccount.
En la página web que aparece, se le pedirá que escriba las credenciales de su cuenta.
Como alternativa, puede incluir las credenciales de la cuenta como un parámetro en el cmdlet Connect-AzAccount mediante -Credential.
Si es un asociado de CSP que trabaja en nombre de un inquilino, especifique el cliente como inquilino. Use su id. de inquilino o el nombre de dominio principal del inquilino. Por ejemplo, Connect-AzAccount -Tenant "fabrikam.com" .
Debe asociar la suscripción que quiere usar con la cuenta, ya que una cuenta puede tener varias suscripciones:
Select-AzSubscription -SubscriptionName $SubscriptionName
Si usa Azure Backup por primera vez, use el cmdlet Register-AzResourceProvider para registrar el proveedor de Azure Recovery Services con la suscripción:
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Compruebe que los proveedores se han registrado correctamente:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
En la salida del comando, compruebe que RegistrationState cambia a Registered. En caso contrario, vuelva a ejecutar el cmdlet Register-AzResourceProvider.
Creación de un almacén de Recovery Services
El almacén de Recovery Services es un recurso de Resource Manager, por lo que deberá colocarlo en un grupo de recursos. Puede usar un grupo de recursos existente o crear uno mediante el cmdlet New-AzResourceGroup. Al crear un grupo de recursos, especifique el nombre y la ubicación del mismo.
Siga estos pasos para crear un almacén de Recovery Services:
Si no tiene un grupo de recursos, cree uno con el cmdlet New-AzResourceGroup. En el ejemplo, se crea un grupo de recursos en la región Oeste de EE. UU:
New-AzResourceGroup -Name "test-rg" -Location "West US"
Use el cmdlet New-AzRecoveryServicesVault para crear el almacén. Especifique la misma ubicación para el almacén que usó en el grupo de recursos.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
Visualización de los almacenes de una suscripción
Para ver todos los almacenes de la suscripción, use Get-AzRecoveryServicesVault:
Get-AzRecoveryServicesVault
La salida será similar a la siguiente. Tenga en cuenta que la salida proporciona el grupo de recursos y la ubicación asociados.
Name : Contoso-vault
ID : /subscriptions/1234
Type : Microsoft.RecoveryServices/vaults
Location : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId : 1234-567f-8910-abc
Properties : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties
Establecer el contexto de almacén
Almacene el objeto de almacén en una variable y establezca el contexto de almacén.
Muchos de los cmdlets de Azure Backup requieren el objeto de almacén de Recovery Services como una entrada, por lo que es conveniente almacenar el objeto de almacén en una variable.
El contexto de almacén es el tipo de los datos protegidos en el almacén. Establézcalo mediante Set-AzRecoveryServicesVaultContext. Una vez que se haya establecido el contexto, se aplica a todos los cmdlets posteriores.
En el ejemplo siguiente se establece el contexto del almacén de testvault:
Get-AzRecoveryServicesVault -Name "testvault" | Set-AzRecoveryServicesVaultContext
Recuperación del identificador del almacén
Tenemos previsto dejar de usar la configuración del contexto de almacén según las directrices de Azure PowerShell. En su lugar, puede almacenar o recuperar el identificador del almacén y pasarlo a los comandos pertinentes. Por lo tanto, si no ha establecido el contexto de almacén o quiere especificar el comando que se va a ejecutar para un determinado almacén, pase el id. de almacén como -vaultID
a todos los comandos pertinentes de la manera siguiente:
$vaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewAFSPolicy" -WorkloadType "AzureFiles" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultID $vaultID
Configuración de una directiva de copia de seguridad
Una directiva de copia de seguridad especifica la programación de las copias de seguridad y cuánto tiempo se deben mantener los puntos de recuperación de copia de seguridad.
Una directiva de copia de seguridad está asociada con al menos una directiva de retención. Una directiva de retención define el tiempo que se conserva un punto de recuperación antes de que se elimine. Puede configurar copias de seguridad con retención diaria, semanal, mensual o anual. Con la directiva de varias copias de seguridad, también puede configurar la retención por hora de las copias de seguridad.
Elección de un tipo de directiva:
Estos son algunos cmdlets para las directivas de copia de seguridad:
- Consulte la retención de la directiva de copia de seguridad predeterminada mediante Get-AzRecoveryServicesBackupRetentionPolicyObject.
- Consulte la programación de la directiva de copia de seguridad predeterminada mediante Get-AzRecoveryServicesBackupSchedulePolicyObject.
- Cree una directiva de copia de seguridad mediante New AzRecoveryServicesBackupProtectionPolicy. Especifique los objetos de directiva de retención y programación como entradas.
De forma predeterminada, se define una hora de inicio en el objeto de directiva de programación. Use el siguiente ejemplo para cambiar la hora de inicio a la hora de inicio deseada. La hora de inicio deseada debe ser la hora universal coordinada (UTC). En el ejemplo siguiente se supone que la hora de inicio deseada es 01:00 UTC para las copias de seguridad diarias.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureFiles"
$UtcTime = Get-Date -Date "2019-03-20 01:30:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime
Importante
Solo tiene que proporcionar la hora de inicio en múltiplos de 30 minutos. En el ejemplo anterior, solo puede ser "01:00:00" o "02:30:00". La hora de inicio no puede ser "01:15:00".
En el ejemplo siguiente se almacenan la directiva de programación y la directiva de retención en variables. Después usa estas variables como parámetros para una nueva directiva (NewAFSPolicy). NewAFSPolicy realiza una copia de seguridad diaria y la conserva durante 30 días.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureFiles"
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureFiles"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewAFSPolicy" -WorkloadType "AzureFiles" -RetentionPolicy $retPol -SchedulePolicy $schPol
La salida será similar a la siguiente:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
NewAFSPolicy AzureFiles AzureStorage 10/24/2019 1:30:00 AM
Habilitación de la copia de seguridad
Una vez que haya definido la directiva de copia de seguridad, puede habilitar la protección para el recurso compartido de archivos de Azure con esta directiva.
Recuperación de una directiva de copia de seguridad
Recupere el objeto de directiva pertinente mediante Get-AzRecoveryServicesBackupProtectionPolicy. Use este cmdlet para obtener una directiva específica o para ver las directivas asociadas a un tipo de carga de trabajo.
Recuperación de una directiva para un tipo de carga de trabajo
En el ejemplo siguiente se recuperan las directivas para el tipo de carga de trabajo AzureFiles:
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureFiles"
La salida será similar a la siguiente:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
dailyafs AzureFiles AzureStorage 1/10/2018 12:30:00 AM
Nota
La zona horaria del campo BackupTime en PowerShell es UTC. Cuando el tiempo de copia de seguridad se muestra en Azure Portal, la hora se ajusta a la zona horaria local.
Recuperación de una directiva específica
La directiva siguiente recupera la directiva de copia de seguridad llamada dailyafs:
$afsPol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "dailyafs"
Habilitación de la protección y aplicación de la directiva
Habilite la protección mediante Enable-AzRecoveryServicesBackupProtection. Una vez que la directiva se ha asociado al almacén, las copias de seguridad se desencadenan según la programación de la directiva.
En el ejemplo siguiente se habilita la protección para el recurso compartido de archivos de Azure testAzureFS, en la cuenta de almacenamiento testStorageAcct, con la directiva dailyafs:
Enable-AzRecoveryServicesBackupProtection -StorageAccountName "testStorageAcct" -Name "testAzureFS" -Policy $afsPol
El comando espera hasta que el trabajo de protección configurado termina y proporciona una salida similar, tal como se muestra en el siguiente ejemplo:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
testAzureFS ConfigureBackup Completed 11/12/2018 2:15:26 PM 11/12/2018 2:16:11 PM ec7d4f1d-40bd-46a4-9edb-3193c41f6bf6
Para más información sobre cómo obtener una lista de recursos compartidos de archivos para una cuenta de almacenamiento, consulte este artículo.
Aviso importante: Identificación del elemento de copia de seguridad
En esta sección se describe un cambio importante en las copias de seguridad de recursos compartidos de archivos de Azure en el proceso de preparación para la disponibilidad general.
Al habilitar la copia de seguridad los recursos compartidos de archivos de Azure, el usuario proporciona al cliente el nombre del recurso compartido de archivos como nombre de la entidad; una vez hecho esto, se crea un elemento de copia de seguridad. El nombre del elemento de copia de seguridad es un identificador único que crea el servicio Azure Backup. Normalmente, el identificador es el nombre descriptivo del usuario. De todos modos, para controlar el escenario de eliminación temporal, donde se puede eliminar un recurso compartido de archivos y crear otro con el mismo nombre, la identidad única del recurso compartido de archivos de Azure ahora es un id.
Para conocer el id. único de cada elemento, ejecute el comando Get-AzRecoveryServicesBackupItem con los filtros correspondientes para backupManagementType y WorkloadType para obtener todos los elementos pertinentes. A continuación, observe el campo del nombre en la respuesta o el objeto de PowerShell devuelto.
Siempre se recomienda realizar una lista de los elementos y luego recuperar su nombre único del campo del nombre de la respuesta. Use este valor para filtrar los elementos con el parámetro Name. De lo contrario, use el parámetro FriendlyName para recuperar el elemento con su id.
Importante
Asegúrese de que PowerShell se actualice a la versión mínima (AZ.RecoveryServices 2.6.0) para las copias de seguridad de recursos compartidos de archivos de Azure. Con esta versión, el filtro friendlyName está disponible para el comando Get-AzRecoveryServicesBackupItem.
Pase el nombre del recurso compartido de archivos de Azure al parámetro friendlyName. Si pasa el nombre del recurso compartido de archivos de Azure al parámetro Name, esta versión genera la advertencia de pasar este nombre al parámetro friendlyName.
Si no instala esta versión mínima pueden producirse errores en los scripts existentes. Instale la versión mínima de PowerShell mediante el siguiente comando:
Install-module -Name Az.RecoveryServices -RequiredVersion 2.6.0
Desencadenamiento de una copia de seguridad a petición
Use Backup-AzRecoveryServicesBackupItem para ejecutar una copia de seguridad a petición para un recurso compartido de archivos protegido de Azure:
- Recupere la cuenta de almacenamiento del contenedor del almacén que contenga los datos de copia de seguridad mediante Get-AzRecoveryServicesBackupContainer.
- Para iniciar un trabajo de copia de seguridad, obtenga información sobre el recurso compartido de archivos de Azure mediante Get-AzRecoveryServicesBackupItem.
- Ejecute una copia de seguridad a petición mediante Backup-AzRecoveryServicesBackupItem.
Ejecute la copia de seguridad a petición de la manera siguiente:
$afsContainer = Get-AzRecoveryServicesBackupContainer -FriendlyName "testStorageAcct" -ContainerType AzureStorage
$afsBkpItem = Get-AzRecoveryServicesBackupItem -Container $afsContainer -WorkloadType "AzureFiles" -FriendlyName "testAzureFS"
$job = Backup-AzRecoveryServicesBackupItem -Item $afsBkpItem
El comando devuelve un trabajo con un id. del cual se puede realizar un seguimiento, tal como se indica en el ejemplo siguiente:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
testAzureFS Backup Completed 11/12/2018 2:42:07 PM 11/12/2018 2:42:11 PM 8bdfe3ab-9bf7-4be6-83d6-37ff1ca13ab6
Las instantáneas del recurso compartido de archivos de Azure se usan mientras se realizan las copias de seguridad. Normalmente, el trabajo finaliza en el momento en que el comando devuelve este resultado.
Pasos siguientes
- Obtenga información sobre cómo realizar copias de seguridad de archivos de Azure Files en Azure Portal.
- Consulte el script de ejemplo en GitHub para usar un runbook de Azure Automation para programar copias de seguridad.