迁移至AKS时将Azure App Service目录拷贝到Azure Fileshare的方法咨询
前置准备
- 提前生成目标Azure Fileshare的SAS令牌:在Azure Portal对应存储账户的文件共享配置页,生成拥有「读取、创建、写入、列出」权限的SAS,拼接后的完整访问地址格式为
https://<存储账户名>.file.core.windows.net/<共享名>?<SAS令牌> - 确认源App Service的持久化存储已开启:Linux App Service默认开启
/home路径持久化,Windows容器实例需提前手动配置持久化存储,确保/home/site/wwwroot/public路径内容可正常访问 - 如果你选择本地中转方案,请先在本地设备安装最新版
azcopy工具
方案1:Kudu环境直接传输(无本地中转,速度最快)
无需将文件下载到本地,直接在App Service的运行环境内执行跨服务传输,适合大文件量场景
- 进入Azure Portal对应App Service的管理页,在左侧「开发工具」分类下找到「SSH」,点击进入Kudu的SSH交互终端
- 终端内执行如下命令下载并解压azcopy工具:
# 下载azcopy v10 Linux版本 wget https://aka.ms/downloadazcopy-v10-linux # 解压压缩包 tar -xvf downloadazcopy-v10-linux # 进入解压后的目录 cd azcopy_linux_amd64_*
- 执行递归拷贝命令,将public目录完整同步到目标Fileshare:
./azcopy cp "/home/site/wwwroot/public/*" "<你的Fileshare完整SAS地址>/public/" --recursive=true - 等待命令执行完成后,核对输出的成功传输文件数和源目录文件数是否一致即可
方案2:本地中转传输(适合需本地留存备份的场景)
先将源文件拉取到本地备份,再上传到Fileshare
- 获取App Service的FTPS访问凭证:在App Service管理页的「部署中心」->「FTPS凭据」页面,记录FTPS地址、用户名、密码
- 执行azcopy命令拉取源目录到本地:
azcopy cp "ftps://<你的FTPS地址>/site/wwwroot/public/*" "<本地存储路径>" --recursive=true --ftp-user <FTP用户名> --ftp-password <FTP密码> - 执行上传命令将本地文件同步到Fileshare:
azcopy cp "<本地存储路径>/public/*" "<你的Fileshare完整SAS地址>/public/" --recursive=true
校验与生产环境注意事项
生产环境操作提示:传输前建议先将App Service切换到维护模式,或者把业务流量临时切到备用实例,避免传输过程中public目录有新增/修改文件,导致两边内容不一致
传输完成后可执行如下命令对比两边文件哈希,确认内容完全一致:./azcopy sync "/home/site/wwwroot/public" "<你的Fileshare完整SAS地址>/public" --recursive=true --compare-hash=MD5
如果命令没有输出待同步的文件,说明两边内容完全匹配,迁移完成。
内容的提问来源于stack exchange,提问作者gharbi.bdr
相关产品推荐
相关产品推荐

