Azure AppService创建的文件消失

时间:2018-02-06 02:00:22

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

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

  • 在%APPDTA%\ mytmp处创建目录。
  • 将文件从blob存储下载到dir。
  • 执行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

在本地窗口10上面的代码工作正常。

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

环境:Java 8,Tomcat,PoerShell 1.4.0版

1 个答案:

答案 0 :(得分:0)

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

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

  

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

来源:Understanding the Azure App Service file system

  

临时文件

     

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

     

%APPDATA%指向类似D:\ local \ AppData的内容。 %TMP%转到   d:\本地的\ Temp。

     

与Persisted文件不同,这些文件不会共享   站点实例之间。

     

此外,你不能依赖他们呆在那里。对于   例如,如果您重新启动Web应用程序,您将发现所有这些   文件夹重置为原始状态。