You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建从FTP传输文件至Google Cloud Storage的脚本/机器人?

FTP到Google Cloud Storage文件传输脚本开发指南

一、可用开发工具与现成脚本

开发工具选项

  • Python:官方库组合ftplib(处理FTP交互)+ google-cloud-storage(GCS操作),生态完善,适合复杂逻辑开发(比如增量同步、错误重试)。
  • Bash/Shell:用lftp(功能强大的FTP客户端)配合Google官方的gsutil命令行工具,适合快速搭建简单的定时同步任务。
  • Go:第三方FTP库github.com/jlaffaye/ftp + Google官方cloud.google.com/go/storage SDK,性能优异,适合高并发、大文件传输场景。

现成可用的脚本/方案

  • Python社区有大量开源实现,直接搜索“ftp to gcs python”即可找到,大多基于上述两个官方库,只需修改配置参数(FTP地址、账号、GCS桶名等)就能直接使用。
  • 通过lftp+gsutil的管道组合,无需编写完整脚本,一行命令就能实现单文件无中转传输,适合临时需求或简单批量任务。

二、是否需要本地中转?可以实现无中转传输

完全不需要本地落地文件,核心是通过流传输将FTP文件内容直接导入GCS,有两种常见实现方式:

Python流传输示例

from ftplib import FTP
from google.cloud import storage
import io

def transfer_ftp_to_gcs(ftp_host, ftp_user, ftp_pass, remote_file, gcs_bucket, gcs_path):
    # 连接FTP服务器
    ftp = FTP(ftp_host)
    ftp.login(ftp_user, ftp_pass)
    
    # 初始化内存流
    file_stream = io.BytesIO()
    
    # 从FTP读取文件到内存流
    ftp.retrbinary(f"RETR {remote_file}", file_stream.write)
    file_stream.seek(0)  # 重置流指针至起始位置
    
    # 上传流内容到GCS
    client = storage.Client()
    bucket = client.bucket(gcs_bucket)
    blob = bucket.blob(gcs_path)
    blob.upload_from_file(file_stream)
    
    # 关闭连接
    ftp.quit()

该脚本将FTP文件内容直接读入内存流,再上传至GCS,全程不生成本地文件。针对大文件,可改用分块上传(blob.upload_from_file支持分块参数),避免内存占用过高。

Bash管道实现无中转

lftp -c "open ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}; get -O - ${REMOTE_FILE}" | gsutil cp - gs://${GCS_BUCKET}/${GCS_PATH}

lftp将远程文件内容输出到标准输出,通过管道直接传递给gsutil,后者从标准输入读取内容并上传至GCS,全程无本地文件生成。

内容的提问来源于stack exchange,提问作者iandev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:22:45