You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:13:38