수동으로 실행하면 제대로 작동하는 데이터베이스 백업 스크립트가 있지만 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에 문제를 일으키는 것일까요?
이 스크립트가 왜 실패하는지 아시나요? 감사해요.