次の/etc/crontab
コードを使用して、過去30日間にデータベースの毎日のバックアップを作成します。
0 8 * * * mysqldump -u root -PASSWORD --all-databases > /root/backups/mysql/db.sql
1 8 * * * zip /root/backups/mysql/db-$(date +\%F-\%T-).sql.zip /root/backups/mysql/db.sql
2 8 * * * rm /root/backups/mysql/db.sql
2 8 * * * find /root/backups/mysql/* -mtime +30 -exec rm {} \;
私の質問:
パスワードをどこに入力する必要がありますか-PASSWORD
?これにより、私が誤ってこのファイルの内容を変更して、近くの人がそれを見ると、私のパスワードが公開されます。
パスワードを入力せずにスクリプトを使用できますか?それとも、cronjobのパスワードを書くように強制しない類似の構文を知っていますか?
答え1
完全なダンプ、バックアップ、およびクリーンアップを実行するスクリプトを作成します。
スクリプトをスケジュールします。
また、パスワードはmysql
保護されたファイルに保存され、コマンドラインに入力する必要はありません。
MySQLでは、エンドユーザーパスワードセキュリティガイド「検討したい文書。
文書をまとめると:
.my.cnf
次のようにホームディレクトリにパスワードを作成して追加します。
[client]
password=your_pass
次に、ファイルに対する他のユーザーの読み取り権限を削除します。
$ chmod 600 .my.cnf
または等しく、
$ chmod u=rw,go-rwx .my.cnf
ファイル名を指定してホームディレクトリに保存すると、.my.cnf
そのファイルはクライアントプログラムでも自動的に使用されます。mysql
mysqldump
ただし、バックアップなどを独自のスクリプトに入れて予約してください。これは、多くのcronジョブよりもメンテナンスが簡単です。