![](/img/trans.png)
[英]How to utilize shell script and AWS CLI to automatically copy a file daily from one S3 bucket to another?
[英]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.