自宅サーバーの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/wp2. バックアップスクリプトの作成
静的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.txt3. 自動実行(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の処理フロー
/root/mariadb-backup.shによるデータベースバックアップ。/root/wp-html-backup.shによる静的HTMLの抽出、ZIP圧縮、および生フォルダ(softdev-learn.cc)とリストの完全削除。/root/backup.shによる最終バックアップ処理の実行。



コメント