Cron 备份我的GCE实例

Cron 备份我的GCE实例,cron,backup,google-compute-engine,Cron,Backup,Google Compute Engine,我发现我要做的事情太难了,我肯定是做错了 我有一个计算实例,它只有根持久磁盘。我只是在这个平台上运行一个Wordpress服务器nginx+php+localmysql,所以我没有添加任何外部组件。目前,这一切都是独立的 现在我只想运行这个实例的常规备份。我了解到这是通过快照完成的,我甚至对此进行了测试,并用快照启动了一个新实例。有道理-现在我只需要自动化 我有一个shell脚本,它使用gcutil拍摄快照并旋转备份。当我使用SSH连接到我的实例中时,这个脚本工作得很好。现在我只想让它作为CRO

我发现我要做的事情太难了,我肯定是做错了

我有一个计算实例,它只有根持久磁盘。我只是在这个平台上运行一个Wordpress服务器nginx+php+localmysql,所以我没有添加任何外部组件。目前,这一切都是独立的

现在我只想运行这个实例的常规备份。我了解到这是通过快照完成的,我甚至对此进行了测试,并用快照启动了一个新实例。有道理-现在我只需要自动化

我有一个shell脚本,它使用gcutil拍摄快照并旋转备份。当我使用SSH连接到我的实例中时,这个脚本工作得很好。现在我只想让它作为CRON作业运行。当我为登录的SSH用户创建crontab时,作业将运行。但是我想让作业运行完/etc/cron.daily,它作为root运行。当cron启动时,它最终会失败:

You are not currently logged in. To authenticate, run
$ gcloud auth login
当我进入root并尝试gcloud身份验证登录时,它警告我应该使用服务帐户。我已尝试将gcloud config帐户设置为自动创建的服务帐户,并尝试创建新的服务帐户。这一切都不起作用-我一直收到身份验证错误。有很多文档对此进行了详细说明,足以让它看起来像拼图一样,但我发现的一切都太模糊,无法简单地告诉我如何创建和/或使用服务帐户从CRON作业调用GCE

我简直不敢相信这有这么难-我是一个相当精明的技术家伙。我只是想用错误的方式使用GCE吗

最后,我所做的只是忽略警告,并通过身份验证进入我从root登录的帐户。CRON作业现在将运行,但我不确定此登录的持久性。它是永久性的吗?还是会超时,备份开始失败?我有它发送电子邮件警报,所以至少我会知道它是否失败

很明显,我有一个很大的学习曲线要走

这就是积累——基本上我有两个问题:

1-是否有指向在shell脚本/CRON作业中使用命令行工具创建和/或使用服务帐户的显式步骤的指针


2-我不是用谷歌的方式做的,还是这里遗漏了什么?

为了使用gcloud命令,您需要授权您的访问权限。您可以使用服务帐户或需要运行gcloud auth login命令来授权当前用户帐户运行gcloud命令。当您通过运行gcloud auth登录在linux机箱上授权用户时,它会在home目录.config/gcloud/credentials中创建一个授权文件,该文件具有该用户的OAuth凭据。除非删除凭据或由于某种原因自动刷新失败,否则将自动刷新这些凭据。因此,以root用户身份运行此命令授权您的root帐户运行gcloud命令,并且您的脚本正常工作

您可以通过为计算引擎创建一个服务帐户作用域设置为读/写的实例来实现设置。有关服务帐户范围的更多信息,请访问。一旦这样做,该实例上的所有用户都将能够运行gcloud compute命令,而无需授权。以下命令将帮助您创建一个实例,其中计算引擎的服务帐户作用域设置为读写。您可以找到有关此操作的详细信息:


gcloud compute instances create-create-scopes compute rw

服务帐户是一个不错的选择。我对克朗也有同样的问题。从服务帐户下载pk12文件,并使用gcloud命令以root用户身份安装。这应该会有所帮助