Google compute engine gcloud计算复制文件成功,但未显示任何文件
我正在将数据从本地计算机复制到计算引擎实例:Google compute engine gcloud计算复制文件成功,但未显示任何文件,google-compute-engine,gcloud,Google Compute Engine,Gcloud,我正在将数据从本地计算机复制到计算引擎实例: gcloud compute copy files/Users/me/project/data.csv实例名称:~/project 该命令将运行并完成以下操作: data.csv 100% 74KB 73.9KB/s 00:00 但是,我在我的计算引擎实例中找不到它。它在~/project文件夹中不可见。是默默地失败了,还是我找错了地方?简短回答 很可能,您正在查找错误的$HOME。确保你在找 在您从中复制的同一用户的主目录中(将是 在远
gcloud compute copy files/Users/me/project/data.csv实例名称:~/project
该命令将运行并完成以下操作:
data.csv 100% 74KB 73.9KB/s 00:00
但是,我在我的计算引擎实例中找不到它。它在~/project
文件夹中不可见。是默默地失败了,还是我找错了地方?简短回答
很可能,您正在查找错误的$HOME
。确保你在找
在您从中复制的同一用户的主目录中(将是
在远程主机上创建(如果以前不存在)
回答不那么简短
如果在调用copy files
时未指定任何远程用户,则gcloud
将尝试确定使用哪个用户登录。你可以看到,如果
您可以查看gcloud
源代码:
#$CLOUD\u SDK\u ROOT/lib/surface/compute/copy\u files.py
# [...]
用户\主机,文件\路径=arg.split(“:”,1)
user_host_parts=user_host.split('@',1)
如果len(用户\主机\部件)==1:
user=ssh\u utils.GetDefaultSshUsername(警告\u帐户\u user=True)
实例=用户\主机\部件[0]
其他:
用户,实例=用户\主机\部件
# [...]
在您的情况下,由于没有指定任何用户,GetDefaultSshUsername()
将被调用,其任务是为
使用。为此,它将选择符合以下条件的第一个选项
订单:
$USER
在GCE特定约束下有效,即,
不包含空格的ASCII字符gcloud
帐户中提取用户名
在中(您可以通过运行gcloud auth list
来检查它是哪一个)#$CLOUD\u SDK\u ROOT/lib/googlecloudsdk/api\u lib/compute/ssh\u utils.py
def GetDefaultSshUsername(帐户上警告用户=False):
# [...]
user=getpass.getuser()
如果没有_IsValidSshUsername(用户):
完整帐户=properties.VALUES.core.account.Get(必需=True)
account\u user=gaia\u utils.MapGaiaEmailToDefaultAccountName(完整帐户)
如果在用户帐户上警告用户:
log.warn('本地用户名[{0}]中的字符无效。'
'使用与活动帐户[{1}]对应的用户名'。格式(用户,帐户\用户))
用户=帐户\用户
返回用户
现在我们知道了选择远程用户名的过程
是的,我的猜测是您使用
与稍后检查远程实例时使用的用户不同
如果文件在那里,因为默认情况下,它们将在
各自的和不同的–
$HOME
目录。您确定使用复制文件时在本地计算机上使用的相同用户名登录GCE实例吗?您的文件很可能位于您的实例上,但位于不同的/home/下,这就是问题所在。我需要补充一点user@instance让它工作。谢谢请随意添加这一点作为答案。好的,完成-并进行扩展解释;-)