我有一个数据库备份脚本,当我手动运行它时,它工作正常,但如果我通过 cron 运行它,它就不起作用,我在日志中得到以下内容:
Mar 11 11:58:02 ip-172-XX-Y-ZZ mysqldump: Could not retrieve file stat of "/home/admin/-": [Errno 2] No such file or directory: '/home/admin/-'
Mar 11 11:58:02 ip-172-XX-Y-ZZ mysqldump: mysqldump: Got errno 32 on write
这是脚本:
#!/bin/bash
# Note: aws credentials are set with `aws configure` after installing aws cli
mysqldump -umysqldumpuser -pmysqldumpuserpassword --all-databases | gzip -c | aws s3 cp - s3://s3-bucket-name/mysql/all-databases--`date +%Y-%m-%d--%H-%M-%S%Z`.sql.gz
crontab 包括这个:
58 0 * * * ~/scripts/mysqldump-all-databases-to-aws-s3.sh 2>&1 | /usr/bin/logger -t mysqldump
这是 AWS LightSail 上的 Debian Jessie 服务器。我在一台运行 Amazon Linux 的服务器上有相同的脚本和 crontab,并且在该服务器上运行正常。
我确实将 Debian 服务器上的时区更改为我的本地时区,而在 Amazon Linux 服务器上则将其设置为 UTC。也许这导致了 cron 的问题?
你知道这个脚本为什么失败吗?谢谢。