将文件还原到 Azure 中的虚拟机

Azure 备份可创建恢复点,这些恢复点存储在异地冗余的恢复保管库中。 从恢复点还原时,可以还原整个 VM,也可以还原单个文件。 本文将详细介绍如何还原单个文件。 本教程介绍如何执行下列操作:

  • 列出和选择恢复点
  • 将恢复点连接到 VM
  • 从恢复点还原文件

先决条件

本教程需要使用 Azure 备份所保护的 Linux VM。 若要模拟意外文件删除和恢复过程,请从 Web 服务器中删除一页。 如果需要运行 Web 服务器且已使用 Azure 备份保护的 Linux VM,请参阅在 Azure 中使用 CLI 备份虚拟机

准备环境:

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 2.0.18 或更高版本的 Azure CLI。

备份概述

当 Azure 启动备份时,VM 上的备份扩展将获取时点快照。 请求第一个备份时,将在 VM 上安装备份扩展。 如果进行备份时 VM 未运行,则 Azure 备份可能还需要获取基础存储的快照。

默认情况下,Azure 备份采用文件系统一致的备份。 Azure 备份获取快照后,数据将传输到恢复服务保管库。 为最大限度地提高效率,Azure 备份仅标识和传输自上次备份以后已更改的数据块。

数据传输完成后,会删除快照并创建恢复点。

从 VM 中删除文件

如果意外删除文件或对文件进行了更改,则可以从恢复点还原单个文件。 此过程允许你浏览恢复点中备份的文件并仅还原所需的文件。 在此示例中,我们从 Web 服务器中删除文件来演示文件级恢复过程。

  1. 若要连接到 VM,请使用 az vm show 获取 VM 的 IP 地址:

    az vm show --resource-group myResourceGroup --name myVM -d --query [publicIps] --o tsv
    
  2. 若要确认网站当前是否正常运行,请打开 Web 浏览器到 VM 的公共 IP 地址。 保持 Web 浏览器窗口处于打开状态。

    Default NGINX web page

  3. 使用 SSH 连接到 VM。 将 publicIpAddress 替换为你在前一个命令中获取的公共 IP 地址:

    ssh publicIpAddress
    
  4. 从 Web 服务器中的 /var/www/html/index.nginx-debian.html 删除默认页面,如下所示:

    sudo rm /var/www/html/index.nginx-debian.html
    
  5. 在 Web 浏览器中,刷新网页。 网站不再加载该页面,如下例中所示:

    NGINX web site no longer loads default page

  6. 关闭与 VM 之间的 SSH 会话,如下所示:

    exit
    

生成文件恢复脚本

为了还原文件,Azure 备份提供了一个脚本,以在将恢复点连接为本地驱动器的 VM 上运行。 你可以浏览该本地驱动器,将文件还原到该 VM,然后断开恢复点。 Azure 备份将根据计划和保留的分配策略继续备份数据。

  1. 若要列出 VM 的恢复点,请使用 az backup recoverypoint list 命令。 在本示例中,我们为在 myRecoveryServicesVault 中受保护的名为 myVM 的 VM 选择最近的恢复点:

    az backup recoverypoint list \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --query [0].name \
        --output tsv
    
  2. 若要获取将恢复点连接或装载到 VM 的脚本,请使用 az backup restore files mount-rp 命令。 下面的示例可为在 myRecoveryServicesVault 中受保护的名为 myVM 的 VM 获取脚本。

    将 myRecoveryPointName 替换为你在前一个命令中获取的恢复点的名称:

    az backup restore files mount-rp \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --rp-name myRecoveryPointName
    

    下载该脚本并显示密码,如下面的示例中所示:

    File downloaded: myVM_we_1571974050985163527.sh. Use password c068a041ce12465
    
  3. 若要将该脚本传输到 VM,请使用安全复制 (SCP)。 提供已下载脚本的名称,并将 publicIpAddress 替换为 VM 的公共 IP 地址。 请确保在 SCP 命令的末尾包括尾部 :,如下所示:

    scp myVM_we_1571974050985163527.sh 52.174.241.110:
    

将文件还原到 VM

将恢复脚本复制到 VM 后,即可连接恢复点并还原文件。

注意

在继续之前,请查看此处,了解是否可以在 VM 上运行脚本。

  1. 使用 SSH 连接到 VM。 将 publicIpAddress 替换为 VM 的公共 IP 地址,如下所示:

    ssh publicIpAddress
    
  2. 为了使得脚本正确运行,请使用 chmod 添加执行权限。 输入你自己的脚本名称:

    chmod +x myVM_we_1571974050985163527.sh
    
  3. 若要装载恢复点,请运行脚本。 输入你自己的脚本名称:

    ./myVM_we_1571974050985163527.sh
    

    在脚本运行时,系统会提示你输入密码以访问恢复点。 输入在上一个生成恢复脚本的 az backup restore files mount-rp 命令输出中显示的密码。

    脚本的输出将提供恢复点的路径。 下面的示例输出显示恢复点已装入 /home/azureuser/myVM-20170919213536/Volume1:

    Microsoft Azure VM Backup - File Recovery
    ______________________________________________
    Please enter the password as shown on the portal to securely connect to the recovery point. : c068a041ce12465
    
    Connecting to recovery point using ISCSI service...
    
    Connection succeeded!
    
    Please wait while we attach volumes of the recovery point to this machine...
    
    ************ Volumes of the recovery point and their mount paths on this machine ************
    
    Sr.No.  |  Disk  |  Volume  |  MountPath
    
    1)  | /dev/sdc  |  /dev/sdc1  |  /home/azureuser/myVM-20170919213536/Volume1
    
    ************ Open File Explorer to browse for files. ************
    
  4. 使用 cp 将 NGINX 默认网页从已装入的恢复点复制回到原始文件位置。 将 /home/azureuser/myVM-20170919213536/Volume1 装入点替换为你自己的位置:

    sudo cp /home/azureuser/myVM-20170919213536/Volume1/var/www/html/index.nginx-debian.html /var/www/html/
    
  5. 在 Web 浏览器中,刷新网页。 网站现在重新正确加载,如下例中所示:

    NGINX web site now loads correctly

  6. 关闭与 VM 之间的 SSH 会话,如下所示:

    exit
    
  7. 使用 az backup restore files unmount-rp 从 VM 卸载恢复点。 下面的示例从 myRecoveryServicesVault 中名为 myVM 的 VM 卸载恢复点。

    将 myRecoveryPointName 替换为你在之前命令中获取的恢复点的名称。

    az backup restore files unmount-rp \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --rp-name myRecoveryPointName
    

后续步骤

在本教程中,你已将恢复点连接到 VM,并且还原了 Web 服务器的文件。 你已了解如何执行以下操作:

  • 列出和选择恢复点
  • 将恢复点连接到 VM
  • 从恢复点还原文件

请进入下一个教程了解如何将 Windows Server 备份到 Azure。