
mysqldump、screen、crontab を使用して、データベースのテーブルを毎日バックアップしようとしています。 のみを実行すると、mysqldump
正しくダンプされますが、 を介して実行するとscreen
、出力ファイルは空白になります。
Crontabの編集
crontab -e
コマンドの追加
0 0 * * * screen -dmS MYDATABASE_MYTABLE_backup mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
答え1
このシナリオで screen を使って何を達成したいのか、なぜそれが必要なのか、よくわかりません。しかし、screen の出力をダンプ ファイルにパイプ (| .. > を使用) しているのであって、screen で実行されるプログラムの出力ではありません。コマンド全体を引用符で囲むか、コマンドをスクリプト ファイルに入れて、代わりにスクリプトを呼び出す方がよいでしょう。
myscript.sh:
#!/bin/sh
mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
画面 -dmS MYDATABASE_MYTABLE_backup myscript.sh