我正在尝试 gzip 在Google Cloud Platform上的文件。
我无法做到。我已经尝试了很多天了。我研究了许多答案,但没有一个人问得这么直。
因此,如果我有文件gs://source/data.csv 6gb
我想在新存储段gs://target/data.csv.gz 1.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小文件。我们可以注意到-z选项后文件大小保持不变。好像我在linux上复制相同文件并运行"gzip filename"
一样,它的大小变为6mb。
答案 0 :(得分:0)
根据John的评论,并按照documentation
由于-z / -Z选项会在上传之前压缩数据
您不能使用-Z标志来压缩已经上传的文件。
如果要压缩已上传到Google Cloud Storage的文件,可以使用Dataflow templates for Bulk Compress。
这可以使用一个命令来完成:
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
或者您可以按照上面链接的说明在控制台上执行此压缩。