我想将一个大文件从一个存储桶 ( )拆分gs://$SRC_BUCKET/$MY_HUGE_FILE
并复制到另一个存储桶 ( gs://$DST_BUCKET/
),但无需在本地下载文件。我希望仅使用gsutil
和 shell 命令来执行此操作。
我正在寻找与以下命令具有相同最终行为的东西:
gsutil cp gs://$SRC_BUCKET/$MY_HUGE_FILE my_huge_file_stored_locally
split -l 1000000 my_huge_file_stored_locally a_split_of_my_file_
gsutil -m mv a_split_of_my_file_* gs://$DST_BUCKET/
但是,因为我在磁盘存储容量有限的 Compute Engine 虚拟机上执行这些操作,所以无法在本地获取大文件(无论如何,这似乎是在浪费网络带宽)。
此示例中的文件按行数 ( -l 1000000
) 拆分,但如果拆分按字节数完成,我将接受答案。
我查看了有关使用 gsutil进行流式上传和下载的文档,以执行以下操作:
gsutil cp gs://$SRC_BUCKET/$MY_HUGE_FILE - | split -1000000 | ...
但我不知道如何将拆分文件直接上传到gs://$DST_BUCKET/
,而不在本地创建它们(虽然暂时只创建 1 个分片进行传输是可以的)。