在计算复制文件期间创建文件夹

Create Folder during compute copy-files

我想将文件从我的笔记本电脑复制到计算实例。我可以将文件复制到一个不存在但在复制过程中创建的文件夹吗?

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

当我运行一个命令时:

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

它没有给出任何错误。但是当我 ssh 进入实例时,它在 /var/www 但

下显示测试
cd /var/www/test 

给我:

-bash: cd: test: Not a directory

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

这是一组有趣的情况,导致了令人惊讶的结果。要了解发生了什么,知道 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