在Google Cloud Storage Bucket中压缩7z

时间:2019-04-05 09:12:51

标签: google-cloud-platform cloud google-cloud-storage 7zip bucket

我正在尝试缩小Google Cloud Storage Bucket中的7z多部分容器。我可以在不复制本地数据并重新上传的情况下执行此操作吗?

我想确保我执行文件的提取而不会产生不必要的开销。我不确定是否有任何方法可以直接在Bucket中完成。

在理想情况下,我可以将存档直接解压缩到存储桶中。

1 个答案:

答案 0 :(得分:0)

我相信您可能会混淆现在使用的术语“存储”(例如,由File System抽象访问的永久性磁盘)与Google Cloud Storage Bucket可以做什么。

您可以对Objects进行多项操作,这些操作是存储在存储桶中的数据,包括上载和下载。

因此,您在Bucket中有一个压缩文件,并且您想对其进行解压缩,并且也要在Bucket中也具有解压缩的内容。然后,您必须将压缩文件下载到可以对其进行解压缩的计算机上,然后再上传解压缩的内容。

我将在这里给您演示。

确保您有一个存档文件,并且当前目录中没有其他内容。

ARCHIVE=ar0000.7z

如果尚未创建一个存储桶,则创建一个存储桶:

gsutil mb gs://sevenzipblobber

将存档文件上传到存储桶:

gsutil cp -v $ARCHIVE gs://sevenzipblobber/archives/

从存储桶中下载存档文件(可以在任何其他时间从任何其他存储桶中下载):

gsutil cp -v gs://sevenzipblobber/archives/$ARCHIVE .

提取并删除存档:

7z x $ARCHIVE && rm -v $ARCHIVE

将当前目录的内容上载到存储桶中,该内容应该是解压缩的存档文件的内容(请注意,使用-m flag可以加快上载速度,输出将变得混乱)

gsutil -m cp -vr . gs://sevenzipblobber/dearchives/$ARCHIVE

列出存储桶的内容:

gsutil ls -r gs://sevenzipblobber/

您还可以使用客户端服务器模式,在该模式下,服务器将负责解压缩存档并将内容再次上传到Cloud Storage。

客户端可以由存储桶上的事件触发Google Cloud Functions,在这种情况下,服务器可以是等待上传的HTTP服务器。 否则,客户端可能是Cloud Pub/Sub Notifications for Cloud Storage,因此服务器必须订阅相应的主题。