私はサーバー上でMySQLデータベースをバックアップするためにCronjobを設定していますが、同じファイルを繰り返し上書きしたくありません。代わりに、選択できるさまざまなバックアップを自動的に実行したいと思います。たとえば、
## Cronjob, run May 21st, 2011:
mysqldump -u username -ppasword database > /path/to/file/21-03-2011.sql
## SAME Conjob, run May 28th, 2011:
mysqldump -u username -ppasword database > /path/to/file/28-03-2011.sql
など。
私のCronjobでシステムの日付と時刻を一種の変数として使用する方法はありますか?そうでなければ、同じ結果を得るためにどのような提案をするべきですか?
ベストアンサー1
次のように試すことができます(下記のGlenn Jackmanが言ったように、すべての文字をエスケープする必要があります%
)。
15 11 * * * touch "/tmp/$(date +\%d-\%m-\%Y).sql"
特定のcronがcrontabのスクリプトでコマンドを実行するか、日付を文字列として計算してからmysqldumpコマンドを実行するスクリプトを作成する必要があるかどうかを確認してください。
エスケープせずに%
Redhat Enterprise Linux 5.0の「cron」は、(私の考えでは)一致するものが見つからないというエラーを表示し続けます)
。これは、エスケープされていないすべての項目が%
コマンドの標準入力に送信されるためです。
%F
また、ファイル名を語彙順に並べ替えるときに日付で並べ替えるには、ISO8601日付形式(yyyy-mm-ddなど)を使用することをお勧めします。