如何在Linux环境的Azure CLI备份脚本中自动设置当前+3天的保留日期
修正后的Azure VM自动备份脚本(支持自动计算保留日期)
原脚本存在两个核心问题导致无法正常自动执行:日期变量的命令执行写法错误,以及未输出Azure CLI要求的标准日期格式。以下是修正后的完整脚本,同时实现了自动计算当前日期加3天作为保留期限的功能:
# 切换到目标Azure订阅 subscriptionId=subscriptionID az account set --subscription $subscriptionId # 检查参数是否齐全 if [ "$#" -ne 2 ]; then echo "用法: $0 <资源组名称> <虚拟机名称>" exit 1 fi # 赋值输入参数 resourceGroupName=$1 vmName=$2 # 定义参数:自动计算当前日期加3天,输出Azure兼容的ISO 8601格式 retainUntilDate=$(date -d "+3 days" +%Y-%m-%d) recoveryServicesVaultName=testvault1 location="Central US" # 执行备份命令 az backup protection backup-now \ --resource-group $resourceGroupName \ --vault-name $recoveryServicesVaultName \ --container-name $vmName \ --item-name $vmName \ --retain-until $retainUntilDate \ --backup-management-type AzureIaasVM # 检查备份执行状态 if [ $? -eq 0 ]; then echo "备份成功" exit 0 else echo "备份失败" exit 99 fi
关键修改说明
- 日期变量修正:原脚本中
date=(date -d "+3days")是数组定义写法,无法正确执行命令。改用$(...)命令替换语法,执行date命令并捕获输出。 - 指定标准日期格式:Azure CLI的
--retain-until参数要求ISO 8601格式(如2024-05-20),因此添加+%Y-%m-%d参数让date命令输出该格式。 - 变量名优化:将原
date变量改为retainUntilDate,避免与系统内置的date命令重名,防止冲突。 - 格式调整:将备份命令拆分为多行,提升可读性,适合后续维护。
Crontab定时配置示例
如果要每天凌晨2点执行脚本,可添加如下Crontab任务(替换脚本路径和参数):
0 2 * * * /path/to/azurebk.azcli myResourceGroup myVM >> /var/log/azure-vm-backup.log 2>&1
此配置会将备份日志输出到指定文件,方便后续排查问题。
内容的提问来源于stack exchange,提问作者Lokesh M
相关产品推荐
相关产品推荐

