- 有问题的文件是否在 Cloud Storage 中?
- 有问题的文件是在本地驱动器还是网络驱动器上?
在您的描述中,您指出“我需要将几个文件压缩成一个 gzip”。我不清楚为此需要一组计算机。这听起来更像是您只想将tar与gzip一起使用。
tar 实用程序将创建一个归档文件,它也可以对其进行压缩。例如:
$ # Create a directory with a few input files
$ mkdir myfiles
$ echo "This is file1" > myfiles/file1.txt
$ echo "This is file2" > myfiles/file2.txt
$ # (C)reate a compressed archive
$ tar cvfz archive.tgz myfiles/*
a myfiles/file1.txt
a myfiles/file2.txt
$ # (V)erify the archive
$ tar tvfz archive.tgz
-rw-r--r-- 0 myuser mygroup 14 Jul 20 15:19 myfiles/file1.txt
-rw-r--r-- 0 myuser mygroup 14 Jul 20 15:19 myfiles/file2.txt
要提取内容,请使用:
$ # E(x)tract the archive contents
$ tar xvfz archive.tgz
x myfiles/file1.txt
x myfiles/file2.txt
更新:
在您更新的问题描述中,您表示您可能同时处理了多个订单。如果需要对结果进行 tar 的频率很低,并且提供 tar 的结果对时间不是非常敏感,那么您可能会使用单个节点来执行此操作。
但是,随着问题规模的扩大,您可能会考虑使用Pipelines API。
您可以在客户订单完成时启动“管道”(在本例中为单个任务),而不是保持固定集群运行。
对 Pipelines API 的调用将启动一个 VM,其唯一目的是下载客户的文件,将它们打包,然后将生成的 tar 文件推送到 Cloud Storage。Pipelines API 基础架构为您执行从 Cloud Storage 复制到 Cloud Storage 的复制操作。您实际上只需要提供 tar 命令行。
这里有一个类似的例子:
https://github.com/googlegenomics/pipelines-api-examples/tree/master/compress
此示例将下载文件列表并独立压缩每个文件。它可以很容易地修改为输入文件列表的 tar 文件。
查看https://github.com/googlegenomics/pipelines-api-examples github 存储库以获取更多信息和示例。
-马特