我正在尝试在Google云端存储分区中收缩7z多部分容器。我可以在不在本地复制数据并重新上传的情况下执行此操作吗?
我想确保我执行文件的提取而不会产生不必要的开销。我不确定是否有任何方法可以直接在Bucket中完成。
在理想情况下,我可以将档案直接解压缩到Bucket中。
我相信你可能会混淆现在使用的术语存储,如在File System抽象访问的持久磁盘中,以及你可以用Google Cloud Storage Bucket做什么。
您可以在Objects上进行多项操作,这些操作是驻留在Buckets中的数据,包括上传和下载。
因此,您在Bucket中有一个压缩文件,并且您希望将其解压缩并将解压缩的内容也放在Bucket中。然后,您必须将压缩文件下载到能够解压缩的某台计算机上,之后您将上传解压缩的内容。
我会告诉你一个示威:
确保您有一个存档文件,当前目录中没有其他内容。
ARCHIVE=ar0000.7z
如果您还没有创建一个Bucket,请创建一个Bucket:
gsutil mb gs://sevenzipblobber
将存档文件上传到Bucket:
gsutil cp -v $ARCHIVE gs://sevenzipblobber/archives/
从Bucket下载存档文件(这可以在任何其他时间从任何其他Bucket下载):
gsutil cp -v gs://sevenzipblobber/archives/$ARCHIVE .
提取并删除存档:
7z x $ARCHIVE && rm -v $ARCHIVE
上传到Bucket当前目录的内容,该内容应该是解压缩的归档文件的内容(请记住,使用-m flag,加速上传,输出将混乱)。
gsutil -m cp -vr . gs://sevenzipblobber/dearchives/$ARCHIVE
列出Bucket的内容:
gsutil ls -r gs://sevenzipblobber/
您还可以使用客户端服务器模式,其中服务器负责解压缩存档并再次将内容上载到云存储。
客户端可能是由Bucket上的事件触发的Google Cloud Functions,在这种情况下,服务器可能是等待上载的HTTP服务器。或者客户端可能是Cloud Pub/Sub Notifications for Cloud Storage,因此服务器必须订阅相应的主题。