Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何将google云平台上的文件从一个bucket压缩到另一个bucket_Google Cloud Platform - Fatal编程技术网

Google cloud platform 如何将google云平台上的文件从一个bucket压缩到另一个bucket

Google cloud platform 如何将google云平台上的文件从一个bucket压缩到另一个bucket,google-cloud-platform,Google Cloud Platform,我正在谷歌云平台上尝试gzip一个文件 我做不到。我已经试了很多天了。我研究了很多答案,但没有一个是直截了当的 所以如果我有文件gs://source/data.csv6gb 我希望在新的存储桶gs://target/data.csv.gz1.5gb cp-z或-z选项不会更改文件大小。我们是否有一个命令行来执行相同的操作 命令包括:- user@cloudshell:~ (userx)$ gsutil cp -z text/csv gs://databucket/xyzppp/test_fol

我正在谷歌云平台上尝试gzip一个文件

我做不到。我已经试了很多天了。我研究了很多答案,但没有一个是直截了当的

所以如果我有文件gs://source/data.csv6gb

我希望在新的存储桶gs://target/data.csv.gz1.5gb

cp-z或-z选项不会更改文件大小。我们是否有一个命令行来执行相同的操作

命令包括:-

user@cloudshell:~ (userx)$ gsutil cp -z text/csv gs://databucket/xyzppp/test_folder/usuals_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv.gz
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z text/gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv.gz                                                                                                                              
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z text/plain gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                            
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=text/csv]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                                  
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=application/octet-stream]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
user@cloudshell:~ (userx)$ gsutil cp -z application/gzip gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P1.csv.gz                                                                                                                                  
Copying gs://databucket/xyzppp/test_folder/XXXX_1_0_20200412084238_P.csv [Content-Type=application/octet-stream]...
- [1 files][ 31.7 MiB/ 31.7 MiB]
Operation completed over 1 objects/31.7 MiB.
下面是一个示例,我试图在18 gb文件上执行gzip操作之前先对小文件进行gzip操作。我们可以注意到-z选项后文件大小保持不变。如果我在linux上复制相同的文件并运行
“gzip filename”
,它的大小将变为6mb


正如John评论的和

因为-z/-z选项会在上载之前压缩数据

不能使用-Z标志压缩已上载的文件


如果你想压缩已经上传到谷歌云存储的文件,你可以使用

这可以使用单个命令完成:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Bulk_Compress_GCS_Files \
    --parameters \
inputFilePattern=gs://YOUR_BUCKET_NAME/uncompressed/*.txt,\
outputDirectory=gs://YOUR_BUCKET_NAME/compressed,\
outputFailureFile=gs://YOUR_BUCKET_NAME/failed/failure.csv,\
compression=COMPRESSION

或者,您可以按照上面链接的文档在控制台上执行此压缩。

正如John所评论的和

因为-z/-z选项会在上载之前压缩数据

不能使用-Z标志压缩已上载的文件


如果你想压缩已经上传到谷歌云存储的文件,你可以使用

这可以使用单个命令完成:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Bulk_Compress_GCS_Files \
    --parameters \
inputFilePattern=gs://YOUR_BUCKET_NAME/uncompressed/*.txt,\
outputDirectory=gs://YOUR_BUCKET_NAME/compressed,\
outputFailureFile=gs://YOUR_BUCKET_NAME/failed/failure.csv,\
compression=COMPRESSION

或者,您可以按照上面链接的文档在控制台上执行此压缩。

命令是什么?结果如何?嗨@JohnHanley,我已经更新了尝试过的命令。我期待的结果是一个gz格式和较小的大小。(就像我们在unix“gzip文件”上所做的那样)。我必须以gzip格式向客户端发送文件。您正在将“bucket”复制到“bucket”。您需要先下载对象以启用压缩。Bucket-to-Bucket是由Google云存储执行的对象复制操作,而不是由
gsutil
执行的“上传”操作。上传操作支持压缩。但不会太慢,因为我必须下载文件,然后gzip它。在GCP上没有任何一个线性命令来执行此操作。(或任何更快的方法)如果你想压缩已经在谷歌云存储中的文件,你需要将它们下载到某个地方(你的桌面,云中的虚拟机),然后压缩它们。谷歌云存储不提供压缩现有项目等处理功能。该命令是什么?结果如何?嗨@JohnHanley,我已经更新了尝试过的命令。我期待的结果是一个gz格式和较小的大小。(就像我们在unix“gzip文件”上所做的那样)。我必须以gzip格式向客户端发送文件。您正在将“bucket”复制到“bucket”。您需要先下载对象以启用压缩。Bucket-to-Bucket是由Google云存储执行的对象复制操作,而不是由
gsutil
执行的“上传”操作。上传操作支持压缩。但不会太慢,因为我必须下载文件,然后gzip它。在GCP上没有任何一个线性命令来执行此操作。(或任何更快的方法)如果你想压缩已经在谷歌云存储中的文件,你需要将它们下载到某个地方(你的桌面,云中的虚拟机),然后压缩它们。谷歌云存储不提供压缩现有项目等处理功能。