如何使用Colab将Google Drive大文件拷贝至Google Cloud Storage
可行落地方法
最优方案:Google Drive到GCS直接流式传输(完全不占用Colab本地磁盘)
这个方案可直接落地,核心逻辑是分块读取Google Drive文件流,直接同步分块上传到GCS,全程只在内存中缓存单块数据,无需存储完整文件到Colab磁盘,完美适配80GB以上大文件传输需求。
具体实现步骤(Colab环境可直接运行)
- 安装依赖库
!pip install google-cloud-storage google-api-python-client
- 账号授权
from google.colab import auth auth.authenticate_user()
- 导入依赖并配置参数
from googleapiclient.discovery import build from google.cloud import storage import io # 自定义配置项 GDRIVE_FILE_ID = "待传输文件的Google Drive ID" # 从文件分享链接中提取 GCP_PROJECT_ID = "你的GCP项目ID" GCS_BUCKET_NAME = "目标存储桶名称" GCS_FILE_PATH = "文件在GCS中的保存路径/文件名" CHUNK_SIZE = 150 * 1024 * 1024 # 150MB分块,可根据需求调整
- 初始化服务客户端
# 初始化Google Drive客户端 drive_client = build("drive", "v3") # 初始化GCS客户端 gcs_client = storage.Client(project=GCP_PROJECT_ID) target_bucket = gcs_client.bucket(GCS_BUCKET_NAME) target_blob = target_bucket.blob(GCS_FILE_PATH, chunk_size=CHUNK_SIZE)
- 执行流式传输
# 获取Drive文件读取流 file_request = drive_client.files().get_media(fileId=GDRIVE_FILE_ID) # 分块读取+同步上传,全程不写入本地磁盘 target_blob.upload_from_file(file_request, chunksize=CHUNK_SIZE) print("文件传输完成")
注意事项
- 若待传输文件是Google Docs/Sheets等Workspace专属格式,需先调用Drive API的export接口导出为通用格式再传输
- 需确保当前授权账号同时拥有Google Drive文件的读取权限、GCS存储桶的写入权限
- 若Colab运行中断,可搭配GCS的断点续传接口实现续传,无需重新传输完整文件
替代方案:分块本地缓存传输
如果需要自行控制分块落盘逻辑,可按以下逻辑实现:每下载150MB分块写入Colab本地临时文件,上传完成后立即删除该分块文件,全程磁盘占用稳定在150MB左右,不会触发容量上限。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

