質問: お世話になっております。 今回はsh、crontabについてです。よろしくお願いいたします。 運営しているサービスのバックアップを取ろうと思い、crontabを使って深夜に バックアップを取ることにしたのですが、mysqldumpの結果が0Byteになります。 `/backup/`に`backupdb.sh`を作成し、以下のように記述しました。 パーミッションは755です。 ``` #!/bin/sh # バックアップの保存期間(日) period=7 # バックアップ保存用ディレクトリ dirpath='/backup/db' filename=`date +%y%m%d` # 本来はdatebaseにデータベース名、userにユーザー名、passwordにパスワードが入っています。 mysqldump datebase --single-transaction --host=127.0.0.1 --user=user --password=password > $dirpath/$filename.sql chmod 700 $dirpath/$filename.sql oldfile=`date --date "$period days ago" +%y%m%d` rm -f $dirpath/$oldfile.sql ``` これをコンソールで実行すると、`/backup/db/`に`160905.sql`のような形で保存されるのを確認しました。 内容も問題ありませんでしたので、これをcrontabに登録しました。 ``` 00 1 * * * /backup/backupdb.sh ``` このように設定すると、午前1時にファイルは作成されますが中身が空になってしまいました。 何か記述がおかしな所はありますでしょうか? ご回答よろしくお願いいたします。
回答: `backupdb.sh`に、mysqldumpをフルパスで記述するか環境変数PATHを設定してください。 cronはログインユーザーではないのでログインユーザーとPATHの設定が異なります。