Linux备份脚本无法运行

时间:2017-12-06 14:05:09

标签: linux amazon-web-services amazon-s3 backup

我使用limux CentOS7运行备份脚本,该脚本将创建.tar文件,然后将文件发送到S3存储桶。

然而,当执行cornjob时,它只运行一半脚本并创建.tar文件,但不会将其上传到S3。

备份脚本;

TIME=`date +%b-%d-%y`            # This Command will add date in Backup File Nam            e.
FILENAME=backup-$TIME.tar.gz     #define Backup file name format.
SRCDIR=/opt                      # Location of Important Data Directory (Source of             backup).
DESDIR=/home/centos/backupfile   # Destination of backup file.
tar -cvf $DESDIR/$FILENAME $SRCDIR
aws s3 cp /home/centos/backupfile/$FILENAME s3://backup/

cronjob是;

30 7 * * * /home/centos/backupfile/runbackup

当我通过运行./runbackup手动运行备份文件时,它工作正常并将文件发送到s3存储桶。

我已经检查了.tar文件的权限,这看起来很好,不太确定为什么它不会工作。我试过移动文件位置,更改cronjob设置但没有运气。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

您是否尝试指定执行命令的用户?像这样:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
30 7 * * * root /home/centos/backupfile/runbackup

答案 1 :(得分:0)

我假设您的存储桶实际上并未命名为“备份”。

当您手动运行时,您在哪个用户下运行它?它是否与在cron下运行它的用户相同?此外,您是否也在寻找该用户的个人资料(source ~/.profile或类似内容)?如果没有,您可能会遗漏一些脚本所需的环境变量,这些变量在您以交互方式运行时存在。另一件要检查的是你如何将凭据传递给S3?例如,当您手动运行它时,该用户是否具有AWS凭据和配置文件等,或者您是否正在使用IAM角色?

最后,确保脚本中可执行文件的路径有效;例如/usr/local/bin/aws

调试它的一种方法是将一堆日志记录语句写入文件,以便您可以检查更多内容。

答案 2 :(得分:0)

尝试在您的脚本开头将密钥设置为环境变量AWS_ACCESS_KEY_ID(您的AWS访问密钥)和AWS_SECRET_ACCESS_KEY(您的AWS密钥)。

答案 3 :(得分:0)

昨天在(smscstewart)的帮助下回答了这个问题。

我们添加了以下可以正常使用的行。

source $ HOME / .bash_profile / usr / local / bin / aws s3 cp / home / centos / backupfile / $ FILENAME s3:// backup /