如何在 google 云存储上扩充大型 zip 文件?
How do I inflate a large zip file on google cloud storage?
我正在 google 云上实施一个无服务器项目。
用户将在云存储桶上上传 4GB 大小的 zip 文件。 (用户上传前自行压缩文件)
在处理内容之前需要解压缩它们。
我找到 some solutions 小文件:
- 将 zip 文件从存储桶下载到云功能
- 在函数中解压
- 上传解压文件到存储桶
这里,函数下载的文件存储在分配给函数的内存space中。
但是,云函数的最大内存是2GB,对我来说太小了。
在最坏的情况下,我需要使用 VM,但那会很昂贵。
还有其他办法吗?首选语言是 python.
node 的解决方案如下所示:
- 使用@google-cloud/storage 库从存储中的 zip 文件create a read stream
- 通过管道将流传输到 unzip-stream 等模块,它表示它可以让您将压缩文件作为流处理。
- 对于 zip 中的每个条目,使用 Cloud Storage 库 create a write stream 到存储中的新文件,并将输入流从 unzip-stream 传输到新的输出流。
您可能需要很好地理解节点流才能实现这一点。
因为这一切都是通过管道流发生的(而不是一次将所有内容读入内存),它应该使用最少的内存。
我正在 google 云上实施一个无服务器项目。 用户将在云存储桶上上传 4GB 大小的 zip 文件。 (用户上传前自行压缩文件) 在处理内容之前需要解压缩它们。
我找到 some solutions 小文件:
- 将 zip 文件从存储桶下载到云功能
- 在函数中解压
- 上传解压文件到存储桶
这里,函数下载的文件存储在分配给函数的内存space中。 但是,云函数的最大内存是2GB,对我来说太小了。
在最坏的情况下,我需要使用 VM,但那会很昂贵。
还有其他办法吗?首选语言是 python.
node 的解决方案如下所示:
- 使用@google-cloud/storage 库从存储中的 zip 文件create a read stream
- 通过管道将流传输到 unzip-stream 等模块,它表示它可以让您将压缩文件作为流处理。
- 对于 zip 中的每个条目,使用 Cloud Storage 库 create a write stream 到存储中的新文件,并将输入流从 unzip-stream 传输到新的输出流。
您可能需要很好地理解节点流才能实现这一点。
因为这一切都是通过管道流发生的(而不是一次将所有内容读入内存),它应该使用最少的内存。