添加回声/日期时s3cmd不能作为cron-task工作

时间:2015-06-09 03:15:55

标签: amazon-web-services amazon-s3 cron cron-task s3cmd

我有一个运行Ubuntu 14.04的Digital Ocean Droplet(VPS)。我已经安装了s3cmd,并且能够使用此命令成功运行同步:

s3cmd sync --recursive --preserve /srv s3://MY-BUCKET-NAME

如果我将相同的命令放入.sh以每分钟作为一个cron-task运行,那么它可以工作:

* * * * * sh /srv/backupToS3.sh >> /srv/backupToS3.log

但是当我向.sh添加一些回声和日期时

echo 'Started:'
date +'%a %b %e %H:%M:%S %Z %Y'
s3cmd sync --recursive --preserve /srv s3://MY-BUCKET-NAME
echo 'Finished:'
date +'%a %b %e %H:%M:%S %Z %Y'

s3cmd同步无法再次运行/运行。但回声和日期打印到日志文件:

Started:
Mon Jun  8 17:45:01 PDT 2015
Finished:
Mon Jun  8 17:45:01 PDT 2015

任何帮助或推动正确的方向将非常感激。我最初跟着this article走了这么远。

2 个答案:

答案 0 :(得分:4)

s3cmd使用位于〜/ .s3cfg的配置文件。它可能在挑选它时遇到了麻烦。通过--config=/home/username/.s3cfg,看看是否有帮助。

在任何情况下,都不会始终如一地维护s3cmd。官方命令行客户端(aws-cli)在很多方面要好得多。

编辑:将其用作.sh文件,确保其设置了可执行位(chmod 755 whatever.sh)。

echo 'Started:'
date +'%a %b %e %H:%M:%S %Z %Y'
/usr/bin/s3cmd sync --recursive --preserve --config=/usr/bin/s3cmd --verbose /srv s3://MY-BUCKET-NAME
echo 'Finished:'
date +'%a %b %e %H:%M:%S %Z %Y'

答案 1 :(得分:0)

我有同样的问题,我试图找出它为什么没有运行。我的解决方案是将以下行添加到我的脚本顶部:

export HOME=/home/$USERNAME cd /home/$USERNAME

此外,您应该使用:

调用s3cmd
/usr/bin/s3cmd

或者将以下行放在脚本的顶部:

PATH=$PATH:/usr/bin