You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用gcloud compute scp传至GCP实例instance-1的文件去向何方?

问题分析与解决

当你执行gcloud compute scp D:\FPX\new_tst.txt instance-1:时,命令无报错说明传输已经成功,但找不到文件的核心原因是你没注意到gcloud compute scp的默认目标路径规则

为什么找不到文件?

默认情况下,gcloud compute scp会把文件传输到GCP实例中你的gcloud配置默认SSH用户的主目录(/home/<default-ssh-user>/),而不是你在Cloud Shell里当前操作的用户目录,也不是根目录或/tmp。

举个常见场景:如果你的实例是Ubuntu镜像,GCP默认的SSH用户是ubuntu,那文件会传到/home/ubuntu/new_tst.txt;如果是Debian镜像,默认用户是debian。而你在Cloud Shell里可能用的是cloudshell-user这类系统自动生成的用户,去自己的home目录找自然看不到。

快速定位文件的方法

  1. 先确认你的gcloud默认SSH用户
    在本地终端或Cloud Shell里执行这条命令:

    gcloud config get-value compute/ssh-user
    

    输出的结果就是默认的SSH用户名,比如ubuntu

  2. 登录实例查看目标目录
    执行命令直接登录实例:

    gcloud compute ssh instance-1
    

    登录后默认就在该用户的home目录,直接执行ls就能看到new_tst.txt;或者手动指定路径查看:

    ls /home/<刚才查到的用户名>/
    
  3. 下次传输时指定明确路径
    如果你想把文件传到指定位置,比如Cloud Shell当前用户的home目录(假设用户是cloudshell-user),可以这样写命令:

    gcloud compute scp D:\FPX\new_tst.txt instance-1:/home/cloudshell-user/
    

    要是想传到/tmp目录就更直接:

    gcloud compute scp D:\FPX\new_tst.txt instance-1:/tmp/
    

额外提示

如果你不确定实例里的用户情况,登录实例后执行cat /etc/passwd可以查看所有系统用户,重点关注home目录在/home/下的用户,大概率就是你的默认SSH用户。

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

火山引擎 最新活动