你当前正在访问 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 的文件共享。
列出 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
,如下所示:
卸载 clouddrive
随时可以卸载已装载到 Cloud Shell 的文件共享。 由于 Cloud Shell 需要使用已装载的文件共享,因此,在下一个会话中,Cloud Shell 会提示你创建并装载另一个文件共享。
- 运行
clouddrive unmount
。 - 确认提示。
在手动删除已卸载的文件共享之前,它将继续存在。 卸载后,Cloud Shell 在后续会话中不再搜索此文件共享。 若要查看更多详细信息,请运行 clouddrive unmount -h
,如下所示:
警告
虽然运行此命令不会删除任何资源,但手动删除映射到 Cloud Shell 的资源组、存储帐户或文件共享会清除 $HOME
目录磁盘映像和文件共享中的任何文件。 此操作不能撤消。
特定于 PowerShell 的命令
列出 clouddrive
Azure 文件共享
Get-CloudDrive
cmdlet 检索当前由 clouddrive
在 Cloud Shell 中装载的 Azure 文件共享信息。
卸载 clouddrive
随时可以卸载已装载到 Cloud Shell 的 Azure 文件共享。 Dismount-CloudDrive
cmdlet 从当前存储帐户中卸载 Azure 文件共享。
卸载 clouddrive
会终止当前会话。
如果 Azure 文件共享已移除,在下一个会话中,系统会提示你创建并装载一个新的 Azure 文件共享。
将本地文件传输到 Cloud Shell
clouddrive
目录与 Azure 门户存储边栏选项卡同步。 使用此边栏选项卡将本地文件传输到文件共享或从文件共享传输到本地文件。 刷新边栏选项卡时,从 Cloud Shell 中更新文件将反映在文件存储 GUI 中。
从 Azure 门户下载文件
- 在 Azure 门户中,转到已装载的文件共享。
- 选择目标文件。
- 选择“下载”按钮。
在 Azure Cloud Shell 中下载文件
在 Azure Cloud Shell 会话中,选择“上传/下载文件”图标,然后选择“下载”选项。
在“下载文件”对话框中,输入要下载的文件的路径。
只能下载位于
$HOME
文件夹下的文件。选择“下载”按钮。
上传文件
- 请转到已装在的文件共享。
- 选择“上传”按钮。
- 选择要上传的文件。
- 确认上传。
现在应可在 Cloud Shell 的 clouddrive
目录中查看可访问的文件。
注意
如果需要在文件中定义函数并从 PowerShell cmdlet 调用,则必须包含点运算符。 例如: . .\MyFunctions.ps1
在 Azure Cloud Shell 中上传文件
- 在 Azure Cloud Shell 会话中,选择“上传/下载文件”图标,然后选择“上传”选项。 浏览器将打开文件对话框。
- 选择要上传的文件,然后选择“打开”按钮。
此文件将上传到 $HOME
文件夹的根目录。 上传文件后,可以移动该文件。