gsutil - 使用 sql server 作业上传到 gcp 存储桶
问题描述
我正在尝试自动将数据库备份上传到 gcp 存储桶。
我现在正在谷歌云上的虚拟机上工作。我想创建一个 SQL 作业,该作业将运行cmd
将备份文件上传到存储桶的命令。
当我在 cmd 中手动运行命令时它可以工作,但是当我通过 sql agent 运行它时它不会。该作业返回成功,但它并没有真正上传它。
第一个问题是运行机器的谷歌服务没有写入桶的权限;我解决了。我还使用 Gutils 在我的用户下使用 ouath 创建了一个 boto 文件。
我尝试添加-D flag
用于 gsutils 的调试,如果我理解正确它找不到配置文件。sql 代理作业设置为我是所有者。sql 代理服务由网络服务运行。
任何想法为什么它不会上传数据?
据我了解,gsutil 被 nbot 设置为正确的 projectID!将 gcloud 设置为正确的 projectid。我不知道如何将 gsutil 设置为我的 projectid。我查看了 boto 文件,找不到 projectID 配置。
这是 then 命令的调试输出:
正在运行的命令:C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform/gsutil\gsutil -o GSUtil:default_project_id=xxxx-246709 -o GoogleCompute:service_account=default -D -m rsync -r D:\backup\ gs://xxx config_file_list: [u'No config found'] config: [('debug', '0'), ('working_dir', '/mnt/pyami'),
解决方案
我还使用 gsutil 在我的用户下使用 ouath 创建了一个 boto 文件
那个文件在哪里?如果它位于<path to your home directory>\.boto
,则 Boto 库将自动加载它。如果它不在Boto 检查运行时的已知位置之一,则需要BOTO_CONFIG
在运行 gsutil 之前设置环境变量以告诉 Boto 在哪里可以找到配置。gsutil -D version
您可以通过运行并查看该config_file_list
行来找到配置的路径。
推荐阅读
- python - Pandas - populate list with dataframe values as strings
- python - 如何使用 piexif 包在 python 中将度数、分钟和秒 gps 到 tif?
- visual-studio - Add a command to VisualStudio's Debug menu
- jquery - jQuery Flatpickr 在克隆元素中不起作用
- symfony4 - api平台资源上的OneToMany access_control
- java - Access is Denied, Issue in embedded Derby
- meta - 如何更新元属性?
- javascript - requestFullscreen is not returning a promise
- javascript - 如何在 angular/ionic 中使用 httpclient 上传文件
- html - 将弹性项目作为弹性容器是不好的做法吗?