你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Cloud Shell 中持久保存文件

Cloud Shell 使用 Azure 文件存储在会话之间持久保存文件。 初始启动时,Cloud Shell 会提示你关联新文件共享或现有文件共享,以便在会话之间持久保存文件。

注意

Bash 和 PowerShell 共享相同的文件共享。 只能有一个文件共享与 Cloud Shell 中的自动装载相关联。

Cloud Shell 存储帐户不支持 Azure 存储防火墙。

创建新存储

使用基本设置并仅选择一个订阅时,Cloud Shell 会在最靠近你的支持区域中代表你创建三个资源:

  • 资源组:cloud-shell-storage-<region>
  • 存储帐户:cs<uniqueGuid>
  • 文件共享:cs-<user>-<domain>-com-<uniqueGuid>

为存储帐户选择订阅的屏幕截图。

文件共享装载为 $HOME 目录中的 clouddrive。 这是一次性操作,在后续会话中,文件共享会自动装载。

文件共享还包含一个 5-GB 映像,该映像自动将数据持久保存在 $HOME 目录中。 此文件共享同时用于 Bash 和 PowerShell。

使用现有资源

通过使用高级选项,可以关联现有资源。 出现存储设置提示时,选择“显示高级设置”查看更多选项。 填充的存储选项针对本地冗余存储 (LRS)、异地冗余存储 (GRS) 和区域冗余存储 (ZRS) 帐户进行筛选。

注意

建议使用 GRS 或 ZRS 存储帐户以提高后备文件共享的复原能力。 选择哪种类型的冗余取决于你的目标和价格首选项。 详细了解 Azure 存储帐户的复制选项

配置存储帐户的屏幕截图。

保护存储访问

为安全起见,每个用户应创建自己的存储帐户。 对于 Azure 基于角色的访问控制 (Azure RBAC),用户必须具有存储帐户级别的参与者访问权限或更高访问权限。

Cloud Shell 在指定订阅内的存储帐户中使用 Azure 文件共享。 由于继承了权限,对订阅具有足够访问权限的用户可以访问订阅中包含的所有存储帐户和文件共享。

用户应通过在存储帐户或订阅级别设置权限来锁定对其文件的访问权限。

Cloud Shell 存储帐户包含 Cloud Shell 用户在其主目录中创建的文件,其中可能包含敏感信息(包括访问令牌或凭据)。

支持的存储区域

要查找当前区域,可以在 Bash 中运行 env 并找到变量 ACC_LOCATION,或者在 PowerShell 中运行 $env:ACC_LOCATION。 文件共享会收到系统创建的 5-GB 映像,用于保存 $HOME 目录。

Cloud Shell 计算机位于以下区域中:

区域 区域
美洲 美国东部、美国中南部、美国西部
欧洲 欧洲北部、欧洲西部
亚太区 印度中部、亚洲东南部

应选择符合要求的区域。

次要存储区域

如果使用了次要存储区域,则关联的 Azure 存储帐户与要装载它们的 Cloud Shell 计算机位于不同的区域。 例如,你可以将存储帐户设置为位于加拿大东部(次要区域),但你的 Cloud Shell 计算机仍位于主要区域。 你的静态数据位于加拿大,但它是在美国进行处理的。

注意

如果使用了次要区域,则 Cloud Shell 的文件访问和启动时间可能会更慢。

用户可以在 PowerShell 中运行 (Get-CloudDrive | Get-AzStorageAccount).Location 来查看其文件共享的位置。

根据 Azure 资源策略限制资源创建

在 Cloud Shell 中创建的存储帐户都标记有 ms-resource-usage:azure-cloud-shell。 如果想禁止用户在 Cloud Shell 中创建存储帐户,请创建此特定标记触发的适用于标记的 Azure 资源策略

Cloud Shell 存储的工作原理

Cloud Shell 通过以下两种方法持久保存文件:

  • 创建 $HOME 目录的磁盘映像来持久保持目录中所有内容。 磁盘映像以 acc_<User>.img 的形式保存在指定文件共享中的 fileshare.storage.windows.net/fileshare/.cloudconsole/acc_<User>.img 位置,并且会自动同步更改。
  • 将指定的文件共享装载为 $HOME 目录中的 clouddrive,以便直接进行文件共享交互。 /Home/<User>/clouddrive 映射到 fileshare.storage.windows.net/fileshare

注意

$HOME 目录中的所有文件(例如 SSH 密钥)将持久保存在你的用户磁盘映像中,该映像存储在你已装载的文件共享中。 在 $HOME 目录和已装载的文件共享中持久保存信息时,请应用最佳做法。

clouddrive 命令

使用 clouddrive 命令

在 Cloud Shell 中,可以运行名为 clouddrive 的命令,使你能够手动更新装载到 Cloud Shell 的文件共享。

在 Bash 中运行 clouddrive 命令的屏幕截图。

列出 clouddrive

若要查明已装载为 clouddrive 的文件共享,请运行 df 命令。

clouddrive 的文件路径会在 URL 中显示你的存储帐户名称和文件共享。 例如: //storageaccountname.file.core.windows.net/filesharename

justin@Azure:~$ df
Filesystem                                          1K-blocks   Used  Available Use% Mounted on
overlay                                             29711408 5577940   24117084  19% /
tmpfs                                                 986716       0     986716   0% /dev
tmpfs                                                 986716       0     986716   0% /sys/fs/cgroup
/dev/sda1                                           29711408 5577940   24117084  19% /etc/hosts
shm                                                    65536       0      65536   0% /dev/shm
//mystoragename.file.core.windows.net/fileshareName 5368709120    64 5368709056   1% /home/justin/clouddrive

装载新的 clouddrive

手动装载的先决条件

通过使用 clouddrive mount 命令,可以更新关联 Cloud Shell 的文件共享。

注意

装载新的文件共享时,将为 $HOME 目录创建新的用户映像。 以前的 $HOME 映像保留在以前的文件共享中。

使用以下参数运行 clouddrive mount 命令:

clouddrive mount -s mySubscription -g myRG -n storageAccountName -f fileShareName

若要查看更多详细信息,请运行 clouddrive mount -h,如下所示:

在 Bash 中运行 clouddrive mount 命令的屏幕截图。

卸载 clouddrive

随时可以卸载已装载到 Cloud Shell 的文件共享。 由于 Cloud Shell 需要使用已装载的文件共享,因此,在下一个会话中,Cloud Shell 会提示你创建并装载另一个文件共享。

  1. 运行 clouddrive unmount
  2. 确认提示。

在手动删除已卸载的文件共享之前,它将继续存在。 卸载后,Cloud Shell 在后续会话中不再搜索此文件共享。 若要查看更多详细信息,请运行 clouddrive unmount -h,如下所示:

在 Bash 中运行 clouddrive unmount 命令的屏幕截图。

警告

虽然运行此命令不会删除任何资源,但手动删除映射到 Cloud Shell 的资源组、存储帐户或文件共享会清除 $HOME 目录磁盘映像和文件共享中的任何文件。 此操作不能撤消。

特定于 PowerShell 的命令

列出 clouddrive Azure 文件共享

Get-CloudDrive cmdlet 检索当前由 clouddrive 在 Cloud Shell 中装载的 Azure 文件共享信息。

在 PowerShell 中运行 Get-CloudDrive 命令的屏幕截图。

卸载 clouddrive

随时可以卸载已装载到 Cloud Shell 的 Azure 文件共享。 Dismount-CloudDrive cmdlet 从当前存储帐户中卸载 Azure 文件共享。 卸载 clouddrive 会终止当前会话。

如果 Azure 文件共享已移除,在下一个会话中,系统会提示你创建并装载一个新的 Azure 文件共享。

在 PowerShell 中运行 Dismount-CloudDrive 命令的屏幕截图。

将本地文件传输到 Cloud Shell

clouddrive 目录与 Azure 门户存储边栏选项卡同步。 使用此边栏选项卡将本地文件传输到文件共享或从文件共享传输到本地文件。 刷新边栏选项卡时,从 Cloud Shell 中更新文件将反映在文件存储 GUI 中。

从 Azure 门户下载文件

在 Azure 门户中列出本地文件的屏幕截图。

  1. 在 Azure 门户中,转到已装载的文件共享。
  2. 选择目标文件。
  3. 选择“下载”按钮。

在 Azure Cloud Shell 中下载文件

  1. 在 Azure Cloud Shell 会话中,选择“上传/下载文件”图标,然后选择“下载”选项。

  2. 在“下载文件”对话框中,输入要下载的文件的路径。

    Cloud Shell 中“下载”对话框的屏幕截图。

    只能下载位于 $HOME 文件夹下的文件。

  3. 选择“下载”按钮。

上传文件

显示如何在 Azure 门户中上传文件的屏幕截图。

  1. 请转到已装在的文件共享。
  2. 选择“上传”按钮。
  3. 选择要上传的文件。
  4. 确认上传。

现在应可在 Cloud Shell 的 clouddrive 目录中查看可访问的文件。

注意

如果需要在文件中定义函数并从 PowerShell cmdlet 调用,则必须包含点运算符。 例如: . .\MyFunctions.ps1

在 Azure Cloud Shell 中上传文件

  1. 在 Azure Cloud Shell 会话中,选择“上传/下载文件”图标,然后选择“上传”选项。 浏览器将打开文件对话框。
  2. 选择要上传的文件,然后选择“打开”按钮。

此文件将上传到 $HOME 文件夹的根目录。 上传文件后,可以移动该文件。

后续步骤