明日、あなたのサイトが消えても大丈夫ですか?
こんにちは!「リナックス先生」です。
一生懸命作ったWordPressブログ、バックアップは取っていますか?
えっ、バックアップ?
WordPressのプラグインでやろうと思ってたんですけど、設定が難しくて後回しにしてます…。
VPSはレンタルサーバーと違って「自動バックアップ機能」が有料だったり、自分で設定しなきゃいけないの。
もし明日、操作ミスで画面が真っ白になったら…書き溜めた記事は全部パーよ。
今回は、サーバー側で勝手にバックアップを取ってくれる「最強のスクリプト」をプレゼントするわ!
1. 何をバックアップすればいいの?
WordPressを復旧させるには、以下の2つが絶対に必要です。
- Webファイル: 画像やテーマ、プラグインなど(
/var/www/htmlの中身) - データベース(DB): 記事の文章、設定、コメントなど
この2つをセットで保存しないと、元の状態には戻せません。
今回は、これを毎朝自動で圧縮保存し、「過去7日分を残して、それより古いものは自動で消す(容量パンク防止)」という仕組みを作ります。
2. 【手順1】バックアップ用スクリプトの作成
まずはバックアップを保存する場所と、プログラムファイルを作ります。
# 1. バックアップ保存用ディレクトリを作成 mkdir -p /backup/wp # 2. スクリプトファイルを作成(Vimで開く) vi /backup/wp_backup.sh
開いた画面(Vim)に、以下のコードを丸ごとコピペしてください。
※DB_PASSWORD の部分だけ、自分のWordPressのDBパスワードに書き換えてね!
#!/bin/bash # ================================================= # 設定エリア(ここだけ書き換えてください) # ================================================= # 1. バックアップ保存先 BACKUP_DIR="/backup/wp" # 2. WordPressのディレクトリ WP_DIR="/var/www/html" # 3. データベース接続情報 (wp-config.phpの中身と同じ) DB_NAME="wordpress" DB_USER="wordpress" DB_PASSWORD="【ここにパスワードを入れる】" # ================================================= # 処理開始(ここから下は触らなくてOK) # ================================================= DATE=$(date +%Y%m%d) # 1. データベースのダンプ(文章データの保存) mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DATE.sql # 2. ファイルとDBをまとめて圧縮 tar -czf $BACKUP_DIR/$DATE.tar.gz -C $BACKUP_DIR $DATE.sql -C $WP_DIR . # 3. 生のSQLファイルは消す(圧縮したから不要) rm -f $BACKUP_DIR/$DATE.sql # 4. 古いバックアップの削除(7日より前を消す) find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -delete echo "Backup Complete: $DATE"
貼り付けたら、Esc キーを押して :wq で保存して終了します。
実行権限をつける
作ったスクリプトを実行できるようにします。
※パスワードが書いてあるので、他人に見られないよう権限(700)を絞ります。
chmod 700 /backup/wp_backup.sh
テスト実行してみよう
以下のコマンドで、エラーが出ないか確認します。
/backup/wp_backup.sh
何も表示されずに終わるか、Backup Complete と出れば成功です!ls -lh /backup/wp/ で確認すると、202X0101.tar.gz のようなファイルができているはずです。
3. 【手順2】自動実行(Cron)の設定
最後に、このスクリプトを「毎朝4時」に自動実行するようにスケジュール登録します。
Linuxのスケジュール機能「Cron(クーロン)」を使います。
# Cron設定画面を開く crontab -e
Vimのような画面が開くので、以下の1行を追記してください。
0 4 * * * /backup/wp_backup.sh
これで設定完了です!0 4 * * * は「毎日 4時 0分 に実行せよ」という意味です。
まとめ:これで枕を高くして眠れる
お疲れ様でした!
これで、あなたが寝ている間にサーバーが勝手に:
- データベースを保存し
- 画像などもまとめて圧縮し
- 古いバックアップを掃除してくれる
という完全自動化環境が整いました。
すごい!プラグインより簡単かも。
でも、バックアップデータが溜まって容量がいっぱいにならないですか?
スクリプトの中に「7日より古いものは消す」という処理が入っているから大丈夫よ。
でも、もし容量エラーが出たら、以下の記事を参考に対処してね。
▼もし容量不足になったら
バックアップの設定ミスなどで「No space left on device」エラーが出た場合の対処法はこちら。

▼今回のコマンドを復習したい方へ
chmod や vi などの使い方が怪しい方は、こちらの辞書ページをチェック!



コメント