【WordPress】静的HTML化と自動バックアップ

HTML

 自宅サーバーのWordpressに自宅サーバー構築メモが有るので、自宅サーバーがクラッシュしてしまうと詰んでしまいます。
 ですので、静的HTML化してNASにバックアップしてしておきたいと思います。

1.WP-CLIの導入

データベースから公開中の全URLを直接抽出するため、システムへWP-CLIを導入する。

Bash
[root@almalinux ~]# curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[root@almalinux ~]# chmod +x wp-cli.phar
[root@almalinux ~]# mv wp-cli.phar /usr/local/bin/wp

2. バックアップスクリプトの作成

静的HTML化からZIP圧縮、生フォルダの完全クリーンアップまでを行うスクリプト。

Bash
#!/bin/bash

# エラー発生時に処理を即座に中断
set -e

# 1. 公開URLリスト(list.txt)の生成(wpコマンドを絶対パス指定)
cd /var/www/html
/usr/local/bin/wp post list --post_type=post,page --post_status=publish --field=url --allow-root > /backup/wordpress/list.txt

# 2. 内部HTTP経由でのデータエクスポート
cd /backup/wordpress
HTTPS=on wget --page-requisites --adjust-extension --convert-links --no-parent --header="Host: softdev-learn.cc" -i list.txt --base=http://127.0.0.1/

# 3. ZIP圧縮(既存のZIPとURLリストは除外)
zip -r wordpress_html_backup.zip ./* -x "*.zip" -x "list.txt"

# 4. 生成された生フォルダおよび不要なURLリストの削除
rm -rf ./softdev-learn.cc ./list.txt

3. 自動実行(cron)の設定

/etc/cron.d/backup の設定を書き換え、各スクリプトを順番に呼び出す形にする。

Bash
[root@shadow ~]# echo "/backup/wordpress" >> backuplist
[root@shadow ~]# echo "0 4 * * * root /root/mariadb-backup.sh && /root/wp-html-backup.sh && /root/backup.sh" > /etc/cron.d/backup

毎朝4:00の処理フロー

  1. /root/mariadb-backup.sh によるデータベースバックアップ。
  2. /root/wp-html-backup.sh による静的HTMLの抽出、ZIP圧縮、および生フォルダ(softdev-learn.cc)とリストの完全削除
  3. /root/backup.sh による最終バックアップ処理の実行。

コメント