我有一个运行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走了这么远。
答案 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