簡體   English   中英

將文件從存儲桶拆分並復制到另一個存儲桶,而無需在本地下載

[英]Split and copy a file from a bucket to another bucket, without downloading it locally

我想將一個巨大的文件從存儲區( 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 VM上執行這些操作的,因此無法在本地獲取大文件(無論如何,這似乎浪費了網絡帶寬)。

此示例中的文件按行數( -l 1000000 )進行拆分,但是如果按字節數進行拆分,我將接受答案。

我看了一下有關使用gsutil進行流式上傳和下載的文檔,例如:

gsutil cp gs://$SRC_BUCKET/$MY_HUGE_FILE - | split -1000000 | ...

但是我不知道如何在不本地創建拆分文件的情況下直接將拆分文件直接上傳到gs://$DST_BUCKET/ (雖然可以僅創建1個用於傳輸的分片)。

不下載就無法做到這一點,但是您可以使用范圍讀取來構建片段,而無需立即下載完整文件,例如,

gsutil cat -r 0-10000 gs://$SRC_BUCKET/$MY_HUGE_FILE | gsutil cp - gs://$DST_BUCKET/file1
gsutil cat -r 10001-20000 gs://$SRC_BUCKET/$MY_HUGE_FILE | gsutil cp - gs://$DST_BUCKET/file2
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM