【问题标题】:Azure AppService created files disappearsAzure 应用服务创建的文件消失了
【发布时间】:2018-02-06 02:00:22
【问题描述】:

我需要从 blob 存储下载大量文件并压缩/压缩这些文件。由于文件很大(> 2GB),这就是我正在做的事情。

  • 在 %APPDTA%\mytmp 创建一个目录。
  • 将文件从 blob 存储下载到上述目录。
  • 执行 Powershell.exe -executionpolicy remotesigned Compress-Archive -Path srcDir -DestinationPath %APPDTA%\mytmp\myZip.zip
  • 上述所有命令均成功且没有错误。但是缺少 myZip.zip 并且 java 代码抛出 java.nio.file.NoSuchFileException: D:\local\AppData\mytmp\myZip.zip

在本地 Windows 10 上,上面的代码可以正常工作。

我不确定发生了什么。任何帮助表示赞赏。

环境:Java 8、Tomcat、PoerShell 1.4.0 版

【问题讨论】:

  • 您是否尝试过从控制台 (kudu) 运行该命令以查看它是否有效?还有,看看你的 blob 内容是否下载成功?

标签: java azure azure-web-app-service


【解决方案1】:

如下 Azure App Service 文件系统文档中所述,存储在 %APPDATA%%TMP% 中的任何文件都不会在站点实例之间共享,并且如果您的 Web 应用程序由于任何原因重新启动,也将被删除,例如应用程序池回收或手动重启。

您还应该注意应用服务计划 SKU 的大小,因为它也会影响您可以在 Azure Web 应用实例的临时位置实际存储的总大小。

对于免费、共享和消费(功能)网站,有 500MB 所有这些位置的限制一起(即不是每个文件夹)。为了 标准和基本网站,限制非常高(超过 100GB)。

来源:Understanding the Azure App Service file system

临时文件

许多常见的 Windows 位置正在使用 本地机器上的临时存储。比如

%APPDATA% 指向 D:\local\AppData 之类的东西。 %TMP% 转到 D:\本地\温度。

与持久化文件不同,这些文件不共享 在站点实例之间。

此外,您不能指望他们留在那里。为了 例如,如果你重新启动一个网络应用程序,你会发现所有这些 文件夹被重置为原始状态。

【讨论】:

  • 谢谢@juvchan。我在 '%HOME%/some/folder' 使用了另一个位置,问题已解决。
  • 嗨@Raj,如果我的回答有帮助并解决了您的问题,请将其标记为有帮助并回答,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2020-01-31
  • 2015-09-16
  • 1970-01-01
  • 2021-02-23
相关资源
最近更新 更多