如何从GCP VM实例到GCP存储桶创建zip或tar

时间:2020-07-13 22:28:34

标签: ubuntu google-cloud-storage google-compute-engine

我正在尝试从GCP上的/ var / www VM实例创建压缩的备份文件,并将其保存到GCP存储桶。我希望使用SSH,但被告知要在gcloud shell控制台中使用以下命令:

gsutil cp -r / var / www / gs:// bucket-name

使用此命令有效,但是首先需要创建存储桶,然后复制每个文件。与其复制每个文件,我更希望拥有一个zip压缩文件。

完成后,我需要从存储桶中提取或获取该zip文件,然后通过写入现有的/ var / www文件夹并保持相同的文件和文件夹权限将其解压缩到新的VM实例。如果有人知道在该过程的那部分使用什么命令,那将非常有帮助。

第一个包含我要备份的文件的VM实例正在运行Ubuntu 16.04。新的VM实例正在运行Ubuntu 18.04。

之所以这样做,是因为您无法使用最初使用Ubuntu 16.04创建的VM实例,然后通过SSH将其手动更新为18.04。实际上,您可以将Ubuntu更新到18.04,但是一旦完成,就无法再通过SSH重新连接到该计算机。五位GCP工程师已确认这一点。当我问为什么不能再通过SSH进入更新后的VM实例时,有人告诉我,一旦使用SSH将Ubuntu 16.04手动更新为18.04,便会清除Ubuntu 16.04原始版本随附的GCP Cloud SDK。甚至没有安装GCP Cloud SDK即可解决此问题。

解决此问题的唯一方法是使用Ubuntu 18.04创建一个全新的VM实例,您可以通过SSH实例进入该实例。然后将/ var / www中的数据从旧计算机复制到GCP存储桶,然后将数据从该桶复制到新的VM实例。

对于使用gcloud shell或更有效的SSH命令的任何帮助或建议,将不胜感激。

1 个答案:

答案 0 :(得分:0)

有几种方法可以做你想要的事情。

如果您想/必须在其间使用存储桶来存储/var/www目录,则可以使用gcloud cp命令更轻松地完成该操作。

在这种情况下,最好tar目录: tar -cvf webarch.tar /var/www/,然后将其复制到目标存储桶,然后复制到目标VM并untar

如果您不必使用存储桶,则可以使用scp将文件直接从一个VM传输到另一个VM。

syntax of scp的外观如下:

$ scp -r /local/directory/ username@to_host:/remote/directory/

它将复制整个目录结构以及文件权限。

SCP也可以与SSH keys一起很好地工作,因此您可以使用已经拥有的create one来完成此任务。