如何快速从GCP虚拟机实例下载40GB数据?
快速从GCP虚拟机下载大体积数据的方法
以下是几种比scp更高效的下载方案,针对你40GB的数据集可以大幅缩短耗时:
用rsync替代scp
rsync支持增量传输、数据压缩和断点续传,传输效率远高于scp。可以结合GCP的ssh命令直接使用:rsync -avz -e "gcloud compute ssh" <$USER>@<INSTANCE>:/home/$USER/ ~/$LOCAL_DIR参数说明:
-a(归档模式,保留文件权限、时间戳等元数据)、-v(显示传输详情)、-z(开启传输压缩,减少带宽占用)。如果传输中断,重新执行命令会自动续传未完成的部分。先打包压缩再传输
先在GCP实例上将目标目录打包压缩,减少传输的总数据量:# 在实例上打包并压缩 tar -czf /tmp/user_data.tar.gz /home/$USER之后用scp或rsync下载这个压缩包,本地再解压:
gcloud compute scp <$USER>@<INSTANCE>:/tmp/user_data.tar.gz ~/$LOCAL_DIR # 本地解压 tar -xzf ~/$LOCAL_DIR/user_data.tar.gz如果担心单个大文件传输风险,可以拆分成分块:
# 实例上打包并拆分(按10GB分块) tar -czf - /home/$USER | split -b 10G - /tmp/user_data.tar.gz.part- # 下载所有分块后,本地合并 cat ~/$LOCAL_DIR/user_data.tar.gz.part-* > user_data.tar.gz通过Google Cloud Storage(GCS)中转
利用GCS的多线程传输能力,先把数据上传到GCS,再从GCS下载到本地,适合超大体积数据:- 在GCP实例上上传数据到GCS(实例通常自带gsutil工具):
gsutil -m cp -r /home/$USER gs://your-bucket-name/user_data-m参数开启多线程并行上传,大幅提升速度。 - 本地安装gsutil后,从GCS下载:
也可以直接在GCP控制台的GCS页面,通过浏览器下载(适合偏好图形化操作的场景)。gsutil -m cp -r gs://your-bucket-name/user_data ~/$LOCAL_DIR
- 在GCP实例上上传数据到GCS(实例通常自带gsutil工具):
优化scp参数
如果一定要用scp,调整参数也能提升速度:gcloud compute scp --recurse --compress --ssh-flag="-o TCPWindowSize=65536" <$USER>@<INSTANCE>:/home/$USER ~/$LOCAL_DIR--compress开启传输压缩,TCPWindowSize=65536调大TCP缓冲区,提升带宽利用率。
内容的提问来源于stack exchange,提问作者DarkDead
相关产品推荐
相关产品推荐

