在计算副本文件期间创建文件夹

时间:2015-11-05 06:30:36

标签: google-compute-engine google-cloud-platform

我想将笔记本电脑中的文件复制到Compute Instance。我可以将文件复制到不存在但在复制期间创建的文件夹吗?

实施例: 我有一个文件index.php,我想将其复制到/ var / www / test 文件夹测试不存在。

当我运行命令时:

gcloud compute copy-files index.php user@instance-1:/var/www/test

它不会给出任何错误。但是,当我进入实例时,它会在/ var / www下显示测试但是

cd /var/www/test 

给了我:

-bash: cd: test: Not a directory

如何创建目录然后复制文件?

1 个答案:

答案 0 :(得分:1)

这是一组有趣的情况,导致令人惊讶的结果。要了解发生了什么,了解gcloud compute copy-files命令在封面下运行scp命令是有用的。

在这种情况下,scp命令将/var/www/test解释为目标路径。由于/var/www存在,但/var/www/test不存在,因此它会将test部分解释为您要在远程计算机上保存的文件的名称。因此,它将index.php的内容尽职地复制到远程计算机上名为/var/www/test的文件中。

要获得所需的结果,您应删除该文件(使用rm /var/www/test),然后创建一个目录(mkdir /var/www/test)。如果你从一台新机器开始,你可以达到如下所需的结果:

gcloud compute ssh user@instance-1 --command='mkdir /var/www/test'
gcloud compute copy-files index.php user@instance-1:/var/www/test