大文件上传至GCS的可恢复式传输方案咨询
支持断点续传的GCS大文件传输方案
针对你当前用curl | gsutil cp流式传输19GB大文件、无法断点续传的问题,以下是几种可靠的替代方案:
方案1:先断点续传下载到本地,再分块上传到GCS
Cloud Shell提供临时本地存储(注意:会话重启后临时存储会清空,仅适合单次传输过程中中断恢复),步骤如下:
- 用curl断点续传下载文件到本地:
其中curl -C - -L https://archive.org/a_file.7z -o a_file.7z-C -参数会自动检测已下载的文件大小,从中断位置继续下载。 - 用gsutil分块上传到GCS:
设置gsutil cp -o "GSUtil:parallel_composite_upload_threshold=150M" a_file.7z gs://a_bucket/a_file.7zparallel_composite_upload_threshold后,gsutil会自动将大文件分割为小块并行上传,即使传输中断,已上传的块会保留,重启命令后仅需传输剩余部分。
方案2:使用gcloud storage命令(推荐,原生支持断点续传)
gcloud storage是Google Cloud的新版存储工具,对大文件传输的断点续传支持更完善,性能也更优:
- 流式传输+断点续传:
结合curl的断点续传和gcloud storage的分块上传能力,中断后重新执行命令即可恢复传输。curl -C - -L https://archive.org/a_file.7z | gcloud storage cp - gs://a_bucket/a_file.7z - 本地文件上传:
如果已经下载到本地,直接执行:
该命令会自动跟踪已上传的文件块,断点续传无需额外参数。gcloud storage cp a_file.7z gs://a_bucket/a_file.7z
方案3:后台运行避免会话超时
Cloud Shell会话在1小时无操作后会自动断开,可结合nohup或tmux保持进程后台运行:
- 用nohup后台执行:
日志会保存到nohup curl -C - -L https://archive.org/a_file.7z | gcloud storage cp - gs://a_bucket/a_file.7z &nohup.out,可通过tail -f nohup.out查看传输进度。 - 用tmux创建持久会话:
在tmux会话中执行传输命令,即使断开Cloud Shell,重新连接后执行tmux new -s transfer_sessiontmux attach -t transfer_session即可回到会话继续查看进度。
内容的提问来源于stack exchange,提问作者Yulia V
相关产品推荐
相关产品推荐

