2

我正在尝试在 Linux 中使用 cron 将文件上传到 Google Cloud Storage,但它失败了。我还在脚本文件中将路径和配置设置为:

PATH=/bin/gsutil/
export BOTO_CONFIG="/home/ashu/.boto"
# rest of script

但仍然没有任何效果。

4

6 回答 6

3

如果您使用的是 Google Cloud - Compute Engine 提供的默认安装,gsutil 很可能位于 /snap/bin

PATH=$PATH:/snap/bin
于 2019-08-26T10:36:40.067 回答
2

这样做更安全一些

PATH="$PATH":/bin/gsutil/

所以你不会扼杀对和等通常地方的访问/bin/usr/bin你可能不会直接使用它们,但你调用的脚本可能会!

更新:@ComputerDruid 正确地指出引号可以防止空格造成麻烦。

于 2014-11-10T05:30:16.260 回答
1

除了按照 pjz 的建议修改 PATH 之外,您是否尝试查看 gsutil / cron 的实际输出?

推荐失败的原因是什么?如果您需要捕获 gsutil 的输出,您可以将标准输出和错误(stdout 和 stderr)重定向到一个文件,并将其保存在那里。

例如,如果您使用 Bash,您可以gsutil_log.txt通过将 crontab 修改为:

*/1 * * * * /mypath/myscript.sh >> $HOME/gsutil_log.txt

这将重定向stdout并将stderr任何输出附加到gsutil_log.txtin $HOMEmyscript.sh因为 cron 每分钟调用一次。

如果输出有帮助,那应该会让你在调试方面有所进步。

于 2014-11-10T14:40:36.113 回答
1

我删除了我的 pip 安装并使用以下链接进行安装: https ://cloud.google.com/storage/docs/gsutil_install#specifications 。

还应避免在路径和导出中使用 sudo,因为它可能会导致一些问题。

PATH=$PATH:/root/gsutil/
export BOTO_CONFIG="/root/.boto"
# rest of script

上面的代码运行良好。

于 2014-11-11T04:47:40.693 回答
1

我在 Ubuntu 20.04 上遇到了同样的问题,我发现最简单的解决方案是在我的 gsutil 安装和系统 bin 文件夹之间创建一个软链接,如下所示:

sudo ln -s /snap/bin/gsutil /usr/bin/gsutil

于 2020-11-06T10:56:16.703 回答
0

您可以尝试使用完整路径 gsutil 命令在 crontab 中使用

/root/gcloud/gsutil cp ...

于 2020-02-26T08:54:59.283 回答