Cronジョブが失敗しました:ファイル統計を取得できません(cronで実行されていない場合はスクリプトが機能します)。

Cronジョブが失敗しました:ファイル統計を取得できません(cronで実行されていない場合はスクリプトが機能します)。

手動で実行すると正常に動作するデータベースバックアップスクリプトがありますが、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に問題を引き起こしているのでしょうか?

このスクリプトがなぜ失敗するのか知っていますか?ありがとうございます。

関連情報