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

如何从远程服务器复制文件到Google Cloud Storage?已尝试方法均失败求助

解决你的GSutil与GCloud SSH文件传输问题

我来帮你一步步解决这两个文件传输的问题~

问题1:GCloud SSH带命令执行失败

你之前的命令里多了个不必要的反斜杠,导致shell解析出错,而且建议用双引号包裹命令内容避免特殊字符问题。修正后的命令应该是:

gcloud compute ssh user@ftp.example.com --zone my_zone --command="gsutil cp path/to/my_file gs://MY_BUCKET"

另外要注意两个关键点:

  • 远程服务器上必须已经安装并配置好gsutil(因为这条命令是在远程机器上执行的,不是你的本地终端)
  • 远程机器的账号得有访问目标GCS Bucket的权限,你可以先SSH到远程机器手动跑一遍gsutil cp path/to/my_file gs://MY_BUCKET,确认权限没问题再用gcloud批量执行

问题2:GSutil复制HTTP目录报错

gsutil cp本身不支持直接复制整个HTTP目录,只能处理单个HTTP文件,所以你会收到“http未被识别”的错误。这里给你两个可行的解决方案:

方案1:复制单个已知文件

如果知道目录里具体的文件名,直接指定单个文件的HTTP URL即可:

gsutil cp http://example.com/dir1/target_file.txt gs://MY_BUCKET

方案2:递归复制整个目录

先用wget(或者curl)把整个HTTP目录下载到本地/可SSH的服务器上,再上传到GCS。比如:

# 递归下载目录,参数确保下载结构符合预期
wget -r -np -nH --cut-dirs=1 http://example.com/dir1/
# 上传整个目录到GCS
gsutil cp -r dir1/ gs://MY_BUCKET

给你解释下wget的参数:

  • -r:开启递归下载模式
  • -np:不会下载URL里的父级目录,避免下载多余内容
  • -nH:不创建以域名命名的目录,文件直接下载到指定的dir1文件夹
  • --cut-dirs=1:去掉URL里的dir1层级,保证本地目录结构和远程一致

额外建议:利用SSH权限简化操作

既然你有远程服务器的SSH权限,其实没必要走HTTP公开访问的路子——直接在远程服务器上操作本地文件上传到GCS会更高效安全,就是用问题1里修正后的命令就行,或者直接SSH进去手动执行gsutil cp命令,还能实时看到执行日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:14