<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>バックアップ | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/tag/backup/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Sat, 20 Jun 2026 01:34:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>バックアップ | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress の「バックアップ・リストア」BASHスクリプト。crontab で自動バックアップ</title>
		<link>https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 06:28:26 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[RockyLinux9.7]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[リストア]]></category>
		<category><![CDATA[自宅サーバー]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=12790</guid>

					<description><![CDATA[バックアップ・リストアの記事は、以前こちらでも紹介しました 目次 新しいBASHデバッグshellcheckset コマンドスクリプト構成WordPress_Config_Data.sh : 変数設定Wp-Backup. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">バックアップ・リストアの記事は、以前こちらでも紹介しました </p>


<a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/" title="RockyLinux9.３で自宅サーバーを再構築V07・WordPress のバックアップとリストア" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" width="160" height="90" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-160x90.png 160w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-120x68.png 120w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-320x180.png 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">RockyLinux9.３で自宅サーバーを再構築V07・WordPress のバックアップとリストア</div><div class="blogcard-snippet internal-blogcard-snippet">引越しするには、旧環境のデータをバックアップし、新環境へリストアします。WordPress のバックアップとリストアの方法を説明し、自動バックアップするスクリプトを作成します。バックアップ・リストアができると、引越しだけでなく、トラブル時にも以前の状態まで戻せます。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.01.08</div></div></div></div></a>



  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">新しいBASH</a></li><li><a href="#toc2" tabindex="0">デバッグ</a><ol><li><a href="#toc3" tabindex="0">shellcheck</a></li><li><a href="#toc4" tabindex="0">set コマンド</a></li></ol></li><li><a href="#toc5" tabindex="0">スクリプト構成</a><ol><li><a href="#toc6" tabindex="0">WordPress_Config_Data.sh : 変数設定</a></li><li><a href="#toc7" tabindex="0">Wp-Backup.sh : データベース＆WordPressコンテンツのバックアップ</a></li><li><a href="#toc8" tabindex="0">MariaDB_Backup.sh : データベースバックアップ（Wp-Backup.shから呼ばれる）</a></li><li><a href="#toc9" tabindex="0">Wp-Content_Backup.sh : WordPressコンテンツバックアップ（Wp-Backup.shから呼ばれる）</a></li><li><a href="#toc10" tabindex="0">Wp-Restore.sh : データベース＆WordPressコンテンツの復元</a></li><li><a href="#toc11" tabindex="0">MariaDB_Restore.sh データベース復元（Wp-Restore.shから呼ばれる）</a></li><li><a href="#toc12" tabindex="0">Wp-Content_Restore.sh: WordPressコンテンツ復元（Wp-Restore.shから呼ばれる）</a></li><li><a href="#toc13" tabindex="0">Header.sh : デバッグモード仕様（変数 DEBUG=1 で有効）</a></li><li><a href="#toc14" tabindex="0">Tidyup_backfile.sh : バックアップファイルの整理（引数：対象ディレクトリ・保存日数）</a></li></ol></li><li><a href="#toc15" tabindex="0">リストアする場合の注意点</a><ol><li><a href="#toc16" tabindex="0">update_wp_url.sh</a></li></ol></li><li><a href="#toc17" tabindex="0">自動バックアップ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">新しいBASH</span></h2>



<p class="wp-block-paragraph">前回のスクリプトは、<a href="https://www.kazuban.com/blog/mirror-site-v2/#toc9">2020年に紹介した</a>コマンド操作をネット情報を参考にスクリプト化しましたが、今回はこのスクリプトをAIに投げて、最新のBASH構文への変換を教えてもらいながら作成しました。<br>投稿のスクリプト類はちょっと長くなりましたが、全てコピペできるようにしました。<br>また、開発途中ではBASHで一行づつのデバッグもやってみました。</p>



<h2 class="wp-block-heading"><span id="toc2">デバッグ</span></h2>



<p class="wp-block-paragraph">編集はVSCodeを利用したので、デバッグプラグインもインストールしてみましたが、あまり思ったように動いてくれませんでした。<br>AIに聞いてみると、BASH自体にも、構文チェックやステップデバッグができる機能があるようです</p>



<h3 class="wp-block-heading"><span id="toc3">shellcheck</span></h3>



<p class="wp-block-paragraph"><span class="inline-button-white-black"><code>shellcheck [スクリプト名.sh]</code></span>のようにコマンド実行するだけで、スクリプトのバグや構文エラーを簡単にチェックできます。<br>パッケージ名は、キャメルケース的書き方「<strong>S</strong>hell<strong>C</strong>heck」になるので注意が必要です</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-1"><code>sudo dnf install ShellCheck</code></pre>



<p class="wp-block-paragraph">もしパッケージが見つからない場合には、EPELリポジトリが有効になっていない可能性があるのでEPELを有効化した上で再度インストール</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-2"><code>sudo dnf install epel-release
sudo dnf install ShellCheck</code></pre>



<p class="wp-block-paragraph">shellcheck は、スクリプトのバグや構文エラーを検出してエラーコードと共に表示してくれます。<br>標準では致命的でない場合でも警告を出してくるのでちょっとうるさく感じる事もありますが、<br>エラーコードをAIに聞くことでより安全なコードの書き方の学習にもなります</p>



<h3 class="wp-block-heading"><span id="toc4">set コマンド</span></h3>



<p class="wp-block-paragraph">Bashの <code>set</code> コマンドは、シェルの動作やオプションを設定・変更するためのコマンドです。<br>主にスクリプトの安全運転モードやデバッグのために、シェルの冒頭でオプションと組み合わせて使用されます<br>・set -euo pipefail<br>実務でよく使われる定番のオプション<br>これにより、スクリプト実行時のバグや予期せぬトラブルを大幅に減らせます<br><br>・<strong><code>set -x</code></strong>: デバッグ開始<br>実行されるコマンドや変数の展開結果をすべて画面（標準エラー出力）に表示<br><br>・<strong><code>set +x</code></strong>: デバッグ開始<br>実行トレース出力を停止<br><br>・trap &#8216;read -p &#8220;STEP&gt; &#8221; &lt; /dev/tty&#8217; DEBUG<br>実行中、すべてのコマンドを実行する直前で指定文字（STEP&gt;）プロンプトで一時停止<br><br>・export PS4=&#8217;+ ${LINENO}: &#8216;<br>デバッグモード（<code>set -x</code>）で実行されるコマンドを表示する際、そのコマンドのスクリプトでの行番号を出力に含める設定</p>



<p class="wp-block-paragraph">これらコードをスクリプト上部で実行しておくことで、シェルスクリプトのバグの原因特定が早くなります。<br>サンプルコードを書いてみました。</p>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3"><code>#!/bin/bash

set -euo pipefail
# --- debug mode: DEBUGGING=1 で有効 ---
DEBUGGING=1

if &#91;&#91; $DEBUGGING == "1" ]]; then
  echo "Debug mode is 'true' !! "
  export PS4='+ ${LINENO}: '
  set -x
  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
else
  echo "Debug mode is 'false' !! "
fi

# テスト用コード
echo "最初の処理"
x=10
y=20
result=$((x + y))
echo "結果は $result"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">このコードを実行すると、デバッグの状況が体験できます</p>



<p class="wp-block-paragraph">次に今回作成したWordPressのバックアップ＆リストアのスクリプトを紹介します<br>デバッグコードは、Header.sh に別スクリプトにして、呼び出す形式にしました。</p>



<h2 class="wp-block-heading"><span id="toc5">スクリプト構成</span></h2>



<p class="wp-block-paragraph">WordPressのバックアップは、大きく分けて「ファイル（サーバー内のデータ）」と「データベース（MySQL/MariaDB）」の2つが必要になります。<br>前回スクリプトは、昔の経験とネット検索を参考に、自分で作成しましたが<br>今回は、BASHもかなり進化しているみたいなので、AIのサポートで最新の構文で書き直しました。<br>バックアップファイルやスクリプトの構成は<br>・「ユーザーホーム」内に、「Backup」ディレクトリを作成<br>・「Backup」内に、「WordPress」と「bin」ディレクトリを作成<br>・「WordPress」内にWordPress パッケージをインストールしたディレクトリ名（筆者環境では「blog」）を作成します<br>・「blog」内に、データベースとサーバー内データのバックアップを保存します<br>・「bin」内に実行スクリプトを保存します</p>



<pre class="wp-block-preformatted">.[ユーザーホームディレクトリ]<br>├── Backup #「バックアップデータを保存する」<br>│   ├── WordPress #「WordPerss関連データ」<br>│   │   └── blog #「blog内のバックアップデータ」<br>│   │       ├── 20260530-MariaDB.bak       # データベースバックアップ<br>│   │       ├── 20260530-Wp-content.tar.gz # WordPressコンテンツ<br>│   │       ├── mariadb_backup.log<br>│   │       └── wp_backup.log<br>│   ├── bin #「スクリプト」<br>│   │   ├── Header.sh                #「デバッグ用のスクリプト」<br>│   │   ├── MariaDB_Backup.sh        #「データベースのバックアップ」<br>│   │   ├── MariaDB_Restore.sh       #「データベースのリストア」<br>│   │   ├── Tidyup_backfile.sh       #「バックアップデータの整理」<br>│   │   ├── WordPress_Config_Data.sh #「バックアップ環境の設定」<br>│   │   ├── Wp-Backup.sh             #「バックアップ用メインスクリプト」<br>│   │   ├── Wp-Content_Backup.sh     #「WordPressデータのバックアップ」<br>│   │   ├── Wp-Content_Restore.sh    #「WordPressデータのリストア」<br>│   │   └── Wp-Restore.sh            #「リストア用メインスクリプト」</pre>



<h3 class="wp-block-heading"><span id="toc6">WordPress_Config_Data.sh : 変数設定</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-4"><code>#!/bin/bash
#  WoredPressバックアップ設定ファイル
#    WordPress_Config_Data.sh    2026/05 by Kazuban
#------------------------------------
export USER="kazuban"
export USER_DIR="/home/${USER}"
export SUB_DIR="blog"
export DOCUMEN_ROOT="/home/www/html"
#----- MariaDB ----------------------
export MYSQL_ROOT_PASSWD="hogehoge_passwd"
export DATABASE="WpDb"
export MYSQL_USER="WpAdmin"
export MYSQL_USER_PASSWD="WpPasswd"
#----- WordPress --------------------
export WP_CONTENT_DIR="wp-content"
export WP_CONTENT_FILENAME="Wp-content"
export WP_CONTENT_PATH="/home/www/html/${SUB_DIR}/${WP_CONTENT_DIR}"
export WP_CONTENT_OWNER="apache:apache"</code></pre>



<h3 class="wp-block-heading"><span id="toc7">Wp-Backup.sh : データベース＆WordPressコンテンツのバックアップ</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5"><code>#!/bin/bash
#  WoredPress のバックアップ
#    データベース(Mysql)とサーバーデータ(wp-content)
#  Wp-Backup.sh    2026/05 by Kazuban
#------------------------------------
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
export CALLER_SCRIPT="$0"
#export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#shellscriptで警告でたので、AIに聞くとこの書き方が安全らしい
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#---- MariaDB -----------------------
export MYSQL_BACKUP_SCRIPT="${SCRIPT_DIR}/MariaDB_Backup.sh"
export MYSQL_LOG="${BACKUP_DIR}/mariadb_backup.log"
#---- WordPress ---------------------
#export BACKUP_SOURCE_DIR="${DOCUMEN_ROOT}/${SUB_DIR}/wp-content"
export WP_BACKUP_SCRIPT="${SCRIPT_DIR}/Wp-Content_Backup.sh"
export BACKUP_SOURCE_DIR="${DOCUMEN_ROOT}/${SUB_DIR}/${WP_CONTENT_DIR}"
export WP_LOG="${BACKUP_DIR}/wp_backup.log"
#------------------------------------
export TIDY_UP_SCRIPT="${SCRIPT_DIR}/Tidyup_backfile.sh"
export DAYS_AGO="5"
#-----　関数定義 -----------------------
user_dir=$(pwd)
echo $user_dir
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
check_backup_dir(){
  #$BACKUP_DIRが存在しない場合には作成
  mkdir -p $BACKUP_DIR 
}
cmd_mariadb()   { check_backup_dir; $MYSQL_BACKUP_SCRIPT; }
cmd_wordpress() { check_backup_dir; $WP_BACKUP_SCRIPT; }
cmd_all()       { cmd_mariadb; cmd_wordpress; }
cmd_help() {
  echo "--- WordPress Backup Script ---"
  echo "Directory: ${SCRIPT_DIR}"
  echo "Usage: $0 {db|wp|all|help}"
  echo "  db   = データベース(MariaDB)"
  echo "  wp   = Word Press (Wp-Content)"
  echo "  all  = db + wp"
  echo "  help = オプション"
}

#-----　メインプログラム　-------------
#------------------------------------
case "${1:-}" in
  db)        cmd_mariadb   ;;
  wp)        cmd_wordpress ;;
  all)       cmd_all       ;;
  help|"")   cmd_help      ;;
  *)
    echo "Unknown command: $1"
    cmd_help
    exit 1
    ;;
esac
</code></pre>



<h3 class="wp-block-heading"><span id="toc8">MariaDB_Backup.sh : データベースバックアップ（Wp-Backup.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6"><code>#!/bin/bash
#  WoredPress のデータベースバックアップ
#    MariaDB_Backup.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
#------------------------------------
# --- 関数定義 ---
usage() {
  echo "使用方法: ${SCRIPT_NAME:-$(basename "$0")}"
  echo "  データベース(MariaDB)をバックアップし、古いファイルを整理します。"
  exit 0
}

log() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') ${message}" | tee -a "${MYSQL_LOG}"
}

failed() {
  echo "エラー: $1" &gt;&amp;2
  log "ERROR: $1"
  exit 1
}

# バックアップファイル名を生成する（同名ファイルがあれば連番を付加）
make_filename() {
  local date_str
  date_str=$(date '+%Y%m%d')
  local basename="-MariaDB.bak"
  local filename="${date_str}${basename}"
  local i=1
  while &#91;&#91; -e "${BACKUP_DIR}/${filename}" ]]; do
    filename="${date_str}-${i}${basename}"
    (( i++ )) || true
  done
  echo "${filename}"
}

# --- ヘルプ ---
if &#91;&#91; "${1:-}" == "-?" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# --- 事前チェック ---
&#91;&#91; -d "${BACKUP_DIR}" ]]      || failed "バックアップ先が見つかりません: ${BACKUP_DIR}"
&#91;&#91; -x "${TIDY_UP_SCRIPT}" ]]  || failed "整理スクリプトが見つかりません: ${TIDY_UP_SCRIPT}"

# --- ファイル名決定 ---
FILENAME=$(make_filename)
BACKUP_PATH="${BACKUP_DIR}/${FILENAME}"

# --- バックアップ実行 ---
log "MariaDB バックアップ開始: ${FILENAME}"
echo "MariaDB を ${FILENAME} にバックアップします。"

if mariadb-dump \
    --user="${MYSQL_USER}" \
    --password="${MYSQL_USER_PASSWD}" \
    --host=localhost \
    --all-databases \
    --single-transaction \
    --quick \
    &gt; "${BACKUP_PATH}" \
    2&gt;&gt; "${MYSQL_LOG}"; then
  log "バックアップ成功: ${FILENAME} ($(du -sh "${BACKUP_PATH}" | cut -f1))"
else
  failed "mariadb-dump コマンドが失敗しました"
fi

# --- 古いファイルの整理 ---
log "古いバックアップを整理します（${DAYS_AGO} 日以前）"
"${TIDY_UP_SCRIPT}" "${BACKUP_DIR}" "${DAYS_AGO}"

log "MariaDB バックアップ完了"
echo "MariaDB Backup Complete."</code></pre>



<h3 class="wp-block-heading"><span id="toc9">Wp-Content_Backup.sh : WordPressコンテンツバックアップ（Wp-Backup.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7"><code>#!/bin/bash
#  wp-content ディレクトリのバックアップスクリプト
#    WP-content_Backup.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh wp] から呼び出してください。"
  exit 1
fi
#------------------------------------
readonly SCRIPT_NAME="$(basename "$0")"
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
#------------------------------------
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
#------------------------------------
# --- 関数定義 ---
usage() {
  echo "使用方法: ${SCRIPT_NAME}"
  echo "  wp-content ディレクトリをバックアップし、古いファイルを整理します。"
  exit 0
}

log() {
  local message="$1"
  echo "$(date '+%Y-%m-%d %H:%M:%S') ${message}" | tee -a "${WP_LOG}"
}

failed() {
  echo "エラー: $1" &gt;&amp;2
  log "ERROR: $1"
  exit 1
}

# バックアップファイル名を生成する（同名ファイルがあれば連番を付加）
make_filename() {
  local date_str
  date_str=$(date '+%Y%m%d')
  local basename="-Wp-content.tar.gz"
  local filename="${date_str}${basename}"
  local i=1
  while &#91;&#91; -e "${BACKUP_DIR}/${filename}" ]]; do
    filename="${date_str}-${i}${basename}"
    (( i++ )) || true
  done
  echo "${filename}"
}

# --- ヘルプ ---
if &#91;&#91; "${1:-}" == "-?" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# --- 事前チェック ---
&#91;&#91; -d "${BACKUP_DIR}" ]]   || failed "バックアップ先が見つかりません: ${BACKUP_DIR}"
&#91;&#91; -d "${BACKUP_SOURCE_DIR}" ]]  || failed "バックアップ元が見つかりません: ${BACKUP_SOURCE_DIR}"
&#91;&#91; -x "${TIDY_UP_SCRIPT}" ]]  || failed "整理スクリプトが見つかりません: ${TIDY_UP_SCRIPT}"

# --- ファイル名決定 ---
FILENAME=$(make_filename)
DEST="${BACKUP_DIR}/${FILENAME}"

# --- バックアップ実行 ---
log "WordPress バックアップ開始:"
log "${BACKUP_SOURCE_DIR} → ${DEST}"
echo "WordPress Backup Starting..."

#echo "バックアップファイル：${DEST}"
#echo "sudo chown ${USER}: ${DEST}"
#exit 1
if sudo tar \
    --create \
    --gzip \
    --file="${DEST}" \
    "${BACKUP_SOURCE_DIR}"; then # \
    #2&gt;&gt; "${WP_LOG}"; then
  echo "バックアップファイル：${DEST}"
  echo "sudo chown ${USER}: ${DEST}"
  sudo chown ${USER}: ${DEST}
  log "バックアップ成功: ${FILENAME} ($(du -sh "${DEST}" | cut -f1))"
else
  failed "tar コマンドが失敗しました"
fi

# --- 古いファイルの整理 ---
log "古いバックアップを整理します（${DAYS_AGO} 日以前）"
"${TIDY_UP_SCRIPT}" "${BACKUP_DIR}" "${DAYS_AGO}"

log "WordPress バックアップ完了"
echo "WordPress Backup Complete."</code></pre>



<h3 class="wp-block-heading"><span id="toc10">Wp-Restore.sh : データベース＆WordPressコンテンツの復元</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-8"><code>#!/bin/bash
#  WoredPress の復元
#    データベース(Mysql)とサーバーデータ(wp-content)
#  Wp-Restore.sh    2026/05 by Kazuban
#------------------------------------
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
export CALLER_SCRIPT="$0"
#export SCRIPT_DIR=$(dirname "$(realpath "$0")")
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#---- MariaDB -----------------------
export MYSQL_RESTORE_SCRIPT="${SCRIPT_DIR}/MariaDB_Restore.sh"
export PRE_BACKUP_FILE="Pre-Backup.bak"
#---- WordPress ---------------------
export WP_RESTORE_SCRIPT="${SCRIPT_DIR}/Wp-Content_Restore.sh"
#------------------------------------
export PRE_BACKUP="Y"    # リストア前に現行 wp-content を退避するか Y/N
#-----　関数定義 -----------------------
#user_dir=$(pwd)
#echo $user_dir
# スクリプト終了時に実行させたい場合はここで再定義
cleanup() {
#  echo "Wp-Backup 終了処理"
  :
}
check_backup_dir(){
  if &#91; ! -d $BACKUP_DIR ]; then
    echo "バックアップディレクトリがありません！"
    exit 0 
  fi
}
cmd_mariadb()   { check_backup_dir; $MYSQL_RESTORE_SCRIPT; }
cmd_wordpress() { check_backup_dir; $WP_RESTORE_SCRIPT; }
cmd_all()       { cmd_mariadb; cmd_wordpress; }
cmd_help() {
  echo "--- WordPress Restor Script ---"
  echo "Directory: ${SCRIPT_DIR}"
  echo "Usage: $0 {db|wp|all|help}"
  echo "  db   = データベース(MariaDB)"
  echo "  wp   = Word Press (Wp-Content)"
  echo "  all  = db + wp"
  echo "  help = オプション"
}

#-----　メインプログラム　-------------
#------------------------------------
case "${1:-}" in
  db)        cmd_mariadb   ;;
  wp)        cmd_wordpress ;;
  all)       cmd_all       ;;
  help|"")   cmd_help      ;;
  *)
    echo "Unknown command: $1"
    cmd_help
    exit 1
    ;;
esac
</code></pre>



<h3 class="wp-block-heading"><span id="toc11">MariaDB_Restore.sh データベース復元（Wp-Restore.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-9"><code>#!/bin/bash
#  WoredPress のデータベース復元スクリプト
#    MariaDB_Restore.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
# --- debug mode: DEBUG=1 で有効 ---
#DEBUG=
PRE_BACKUP="Y"   # リストア前にバックアップを取るか Y/N
PRE_BACKUP_FILE="Pre-Backup.bak"
#------------------------------------
export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
#export BACKUP_DIR="${USER_DIR}/Backup/WordPress/${SUB_DIR}"
#------------------------------------

# ---- 関数定義 ---------------------------------------
# バックアップファイルの一覧を配列に格納する
load_backup_files() {
  BACKUP_FILES=()
  while IFS= read -r f; do
    BACKUP_FILES+=("$(basename "$f")")
  #done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*.bak" | sort)
  done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*-MariaDB.bak" | sort)
}

# 番号付きリストを表示する
list_backups() {
  echo "--------------------"
  echo "バックアップディレクトリ: ${BACKUP_DIR}"
  echo "--------------------"

  # --- # は個数を表し、&#91;@] は配列のすべての要素
  if &#91;&#91; ${#BACKUP_FILES&#91;@]} -eq 0 ]]; then
    echo "（バックアップファイルが見つかりません）"
  else
    local i=1
    for f in "${BACKUP_FILES&#91;@]}"; do
      printf "  &#91;%d] %s\n" "$i" "$f"
      (( i++ )) || true   # set -e 対策: (( )) は 0 になると終了コード 1 を返すため
    done
  fi
  echo "--------------------"
}

# 入力値（番号 or ファイル名）からファイル名を解決して返す
resolve_input() {
  local input="$1"

  # 数字のみ → 番号として解釈
  if &#91;&#91; "$input" =~ ^&#91;0-9]+$ ]]; then
    local idx=$(( input - 1 ))
    if (( idx &lt; 0 || idx &gt;= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" &gt;&amp;2
      exit 1
    fi
    echo "${BACKUP_FILES&#91;$idx]}"
  else
    # 文字列 → ファイル名として解釈（リスト内に存在するか確認）
    local f
    for f in "${BACKUP_FILES&#91;@]}"; do
      if &#91;&#91; "$f" == "$input" ]]; then
        echo "$f"
        return
      fi
    done
    echo "エラー: ファイルが見つかりません: ${input}" &gt;&amp;2
    exit 1
  fi
}

# 対話形式でファイルを選択させる
select_backup_file() {
  local selected=""
  while &#91;&#91; -z "$selected" ]]; do
    read -r -p "番号またはファイル名を入力してください (q で終了): " INPUT
    case "$INPUT" in
      &#91;qQ])
        kill -USR1 $$    # 親プロセス（スクリプト自身）にシグナルを送る
        exit 1;;
      "")   echo "入力してください" ;;
      *)    selected=$(resolve_input "$INPUT") ;;
    esac
  done
  echo "$selected"
}

usage() {
  echo "使い方: $(basename "$0") &#91;バックアップファイル名 or 番号]"
  echo "  引数なしで起動すると対話形式で選択できます。"
  echo "--------------------"
  list_backups
  exit 1
}

run_pre_backup() {
  local date_str
  date_str=$(date '+%Y%m%d-%H%M')
  local pre_backup_path="${BACKUP_DIR}/${date_str}-${PRE_BACKUP_FILE}"

  echo "--------------------"
  echo "-- 事前バックアップを開始します... --"

  #mysqldump \
  mariadb-dump \
    --user="${MYSQL_USER}" \
    --password="${MYSQL_USER_PASSWD}" \
    --host=localhost \
    --all-databases \
    --single-transaction \
    --quick \
    &gt; "${pre_backup_path}"

  echo "-- 事前バックアップ完了: ${pre_backup_path} --"
  echo "--------------------"
}

run_restore() {
  local backup_file="${BACKUP_DIR}/${1}"

  echo "--------------------"
  echo "-- リストア対象: ${1} --"
  echo "-- データベース: ${DATABASE} --"
  echo "--------------------"

  read -r -p "リストアを実行しますか？ (y/n): " YN
  case "${YN}" in
    &#91;yY])
      echo "-- リストアを開始します... --"
      #mysql \
      mariadb \
        --user=root \
        --password="${MYSQL_ROOT_PASSWD}" \
        "${DATABASE}" \
        &lt; "${backup_file}"
      echo "-- リストア完了 --"
      ;;
    &#91;nN])
      kill -USR1 $$    # 親プロセス（スクリプト自身）にシグナルを送る
      exit 0
      echo "-- 中止しました --"
      exit 0
      ;;
    *)
      echo "エラー: y または n を入力してください" &gt;&amp;2
      exit 1
      ;;
  esac
}

# ----- メイン処理 --------------------------------------------

# バックアップディレクトリの存在確認
if &#91;&#91; ! -d "${BACKUP_DIR}" ]]; then
  echo "エラー: バックアップディレクトリが存在しません: ${BACKUP_DIR}" &gt;&amp;2
  exit 1
fi

# ファイル一覧をグローバル配列に読み込む
# declare 変数の属性やタイプ -a 「配列(Array)」
declare -a BACKUP_FILES
load_backup_files

# ヘルプ
if &#91;&#91; "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# ファイル選択：引数あり → 解決、なし → 対話形式
if &#91;&#91; $# -gt 0 ]]; then
  list_backups
  SELECTED_FILE=$(resolve_input "$1")
else
  list_backups
  SELECTED_FILE=$(select_backup_file)
fi

echo "-- 選択されたファイル: ${SELECTED_FILE} --"

# 事前バックアップ
if &#91;&#91; "${PRE_BACKUP}" =~ ^&#91;Yy]$ ]]; then
  run_pre_backup
fi

# リストア実行
run_restore "${SELECTED_FILE}"
</code></pre>



<h3 class="wp-block-heading"><span id="toc12">Wp-Content_Restore.sh: WordPressコンテンツ復元（Wp-Restore.shから呼ばれる）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-10"><code>#!/bin/bash
#  wp-content ディレクトリの復元スクリプト
#    WP-Content_Restore.sh    2026/05 by Kazuban
#------------------------------------
# 直接実行ガード（呼び出し元スクリプトからのみ実行可）
if &#91;&#91; -z "${CALLER_SCRIPT:-}" ]]; then
  echo "直接実行はできません。"
  echo "&#91;WP-Backup.sh db] から呼び出してください。"
  exit 1
fi
# --- debug mode: DEBUG=1 で有効 ---
#export DEBUG=
PRE_BACKUP="Y"    # リストア前に現行 wp-content を退避するか Y/N
#------------------------------------
export SCRIPT_DIR=$(dirname "$(realpath "$0")")
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
#------------------------------------

# --- 関数定義 ---
# バックアップファイルの一覧を配列に格納する
load_backup_files() {
  BACKUP_FILES=()
  cmd="find ${BACKUP_DIR} -maxdepth 1 -name *-${WP_CONTENT_DIR}.tar.gz"  #${WP_CONTENT_DIR}
  while IFS= read -r f; do
    BACKUP_FILES+=("$(basename "$f")")
  done &lt; &lt;(find "${BACKUP_DIR}" -maxdepth 1 -name "*-${WP_CONTENT_FILENAME}.tar.gz" | sort)
}

# 番号付きリストを表示する
list_backups() {
  echo "--------------------"
  echo "バックアップディレクトリ: ${BACKUP_DIR}"
  echo "--------------------"

  if &#91;&#91; ${#BACKUP_FILES&#91;@]} -eq 0 ]]; then
    echo "（バックアップファイルが見つかりません）" &gt;&amp;2
  else
    local i=1
    for f in "${BACKUP_FILES&#91;@]}"; do
      printf "  &#91;%d] %s\n" "$i" "$f"
      (( i++ )) || true   # set -e 対策: (( )) は 0 になると終了コード 1 を返すため
    done
  fi
  echo "--------------------"
}

# 入力値（番号 or ファイル名）からファイル名を解決して返す
resolve_input() {
  local input="$1"

  # 数字のみ → 番号として解釈
  if &#91;&#91; "$input" =~ ^&#91;0-9]+$ ]]; then
    local idx=$(( input - 1 ))
    if (( idx &lt; 0 || idx &gt;= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" &gt;&amp;2
      exit 1
    fi
    echo "${BACKUP_FILES&#91;$idx]}"
  else
    # 文字列 → ファイル名として解釈（リスト内に存在するか確認）
    local f
    for f in "${BACKUP_FILES&#91;@]}"; do
      if &#91;&#91; "$f" == "$input" ]]; then
        echo "$f"
        return
      fi
    done
    echo "エラー: ファイルが見つかりません: ${input}" &gt;&amp;2
    exit 1
  fi
}

# 対話形式でファイルを選択させる
select_backup_file() {
  local selected=""
  while &#91;&#91; -z "$selected" ]]; do
    read -r -p "番号またはファイル名を入力してください (q で終了): " INPUT
    case "$INPUT" in
      &#91;qQ])
        kill -USR1 $$
        exit 1 ;;
      "")   echo "入力してください" ;;
      *)    selected=$(resolve_input "$INPUT") ;;
    esac
  done
  echo "$selected"
}

# 使い方表示
usage() {
  echo "使い方: $(basename "$0") &#91;バックアップファイル名 or 番号]"
  echo "  引数なしで起動すると対話形式で選択できます。"
  echo "--------------------"
  list_backups
  exit 1
}

# 既存 wp-content を日付付きディレクトリ名にリネームして退避する
run_pre_backup() {
  local date_str
  date_str=$(date '+%Y%m%d-%H%M')
  local backup_path="${WP_CONTENT_PATH}-${date_str}.bak"

  echo "--------------------"
  echo "-- 事前バックアップ（退避）を開始します... --"
  echo "-- ${WP_CONTENT_PATH} → ${backup_path} --"
  sudo mv "${WP_CONTENT_PATH}" "${backup_path}"
  echo "-- 事前バックアップ完了 --"
  echo "--------------------"
}

# リストア実行
run_restore() {
  local backup_file="${BACKUP_DIR}/$1"
  local work_dir
  #work_dir=$(mktemp -d) #添付ディレクトリの利用
  work_dir=$BACKUP_DIR

  echo "--------------------"
  echo "-- リストア対象: $1 --"
  echo "-- 展開先 (${WP_CONTENT_DIR}): ${WP_CONTENT_PATH} --"
  echo "--------------------"

  read -r -p "リストアを実行しますか？ (y/n): " YN
  case "${YN}" in
    &#91;yY])
      echo "-- リストアを開始します... --"

      # 1. アーカイブ内の wp-content の階層数を確認
      echo "-- 展開中: ${backup_file} --"
      local wp_path strip_count

      list=$(tar tzf "${backup_file}")
      wp_path=$(echo "$list" | grep -m1 "${WP_CONTENT_DIR}/$" || true)
      echo "------ $wp_path --------"
      if &#91;&#91; -z "${wp_path}" ]]; then
        echo "エラー: アーカイブ内に ${WP_CONTENT_DIR} ディレクトリが見つかりません" &gt;&amp;2
        exit 1
      fi
      # パスの / の数から除去する階層数を算出
      # 例: home/www/html/sweb01/wp-content/ → スラッシュ5個 → strip=4
      strip_count=$(echo "${wp_path}" | tr -cd '/' | wc -c)
      strip_count=$(( strip_count - 1 ))
      echo $strip_count
      #exit 1
      if &#91;&#91; $strip_count &lt; 0 ]]; then
        echo "エラー: 階層がありません" &gt;&amp;2
        #echo "エラー: アーカイブ内に wp-content ディレクトリが見つかりません"
        exit 1
      fi
      #DIR="${work_dir}/wp-content"
      DIR=${work_dir}
      echo "${DIR}がない場合には作成します"
      mkdir -p "$DIR"
      # --strip-components で wp-content/ を作業ディレクトリ直下に展開
      tar xvzf "${backup_file}" -C "${DIR}" \
        --strip-components="${strip_count}"
      ls -la $DIR

      # 所定の場所に配置してオーナーを設定
      echo sudo mv "${work_dir}/${WP_CONTENT_DIR}" "${WP_CONTENT_PATH}"
      echo sudo chown -R "${WP_CONTENT_OWNER}" "${WP_CONTENT_PATH}/"
      sudo mv "${work_dir}/${WP_CONTENT_DIR}" "${WP_CONTENT_PATH}"
      sudo chown -R "${WP_CONTENT_OWNER}" "${WP_CONTENT_PATH}/"

      echo "-- リストア完了 --"
      # スクリプト終了時に作業ディレクトリを削除
      #trap 'rm -rf "${work_dir}"' EXIT

      ;;
    &#91;nN])
      kill -USR1 $$
      exit 0
      ;;
    *)
      echo "エラー: y または n を入力してください" &gt;&amp;2
      exit 1
      ;;
  esac
}
cleanup() {
  echo Clean up!!
  echo ${BACKUP_DIR}
  #read -r -p "${BACKUP_DIR}/${WP_CONTENT_DIR} 削除しますか？ (Y/N): " INPUT
  #  case "$INPUT" in
  #    &#91;Yy])
  #      rm -rf "${BACKUP_DIR}/${WP_CONTENT_DIR}"  
  #  esac
}

# --- メイン処理 ---

# バックアップディレクトリの存在確認
if &#91;&#91; ! -d "${BACKUP_DIR}" ]]; then
  echo "エラー: バックアップディレクトリが存在しません: ${BACKUP_DIR}" &gt;&amp;2
  exit 1
fi

# ファイル一覧をグローバル配列に読み込む
declare -a BACKUP_FILES
load_backup_files

# ヘルプ
if &#91;&#91; "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
  usage
fi

# ファイル選択：引数あり → 解決、なし → 対話形式
if &#91;&#91; $# -gt 0 ]]; then
  list_backups
  SELECTED_FILE=$(resolve_input "$1")
else
  list_backups
  SELECTED_FILE=$(select_backup_file)
fi

echo "-- 選択されたファイル: ${SELECTED_FILE} --"

# 事前バックアップ（現行 wp-content の退避）
if &#91;&#91; "${PRE_BACKUP}" =~ ^&#91;Yy]$ ]]; then
  run_pre_backup
fi

# リストア実行
run_restore "${SELECTED_FILE}"</code></pre>



<h3 class="wp-block-heading"><span id="toc13">Header.sh : デバッグモード仕様（変数 DEBUG=1 で有効）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-11"><code>#!/bin/bash
#
#  Header.sh    2026/05 by AI &amp; Kazuban
#  共通ヘッダー: source で読み込んで使う
#  使い方: source "${SCRIPT_DIR}/Header.sh"
#
#------------------------------------
#-e：失敗で停止：#-u：未定義変数禁止:#pipefail：パイプの途中も検知
set -euo pipefail

# --- traps ---
trap 'echo "-- 中止しました --"; exit 0' USR1
trap 'echo "Error at line $LINENO"; exit 1' ERR
trap cleanup EXIT

# cleanup は呼び出し元スクリプトで上書き可能
cleanup() {
  :
}

# --- debug mode: DEBUG=1 で有効 ---
export DEBUG=${DEBUG:-0}
if &#91;&#91; "$DEBUG" == "1" ]]; then
  echo "Debug mode is 'true' !! "
  export PS4='+ ${LINENO}: '
  set -x
  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
else
  echo "Debug mode is 'false' !! "
fi
</code></pre>



<h3 class="wp-block-heading"><span id="toc14">Tidyup_backfile.sh : バックアップファイルの整理（引数：対象ディレクトリ・保存日数）</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-12"><code>#!/bin/bash
# Delete $DAY days ago from backup
#
#  Tidyup_backfile.sh  by AI &amp; Kazuban 2026/05
#                default 10 days ago
#
#------------------------
# delete_backup - バックアップファイルを整理するスクリプト
# 使用方法: delete_backup &#91;削除対象ディレクトリ] &#91;何日前まで残すか]

#set -euo pipefail
#--- for debag ----------------------
#--- デバッグモード（DEBUG=1 で有効）---
#if &#91;&#91; "${DEBUG:-0}" == "1" ]]; then
#  export PS4='+ ${LINENO}: '
#  set -x
#  trap 'read -p "STEP&gt; " &lt; /dev/tty' DEBUG
#fi

readonly SCRIPT_NAME="$(basename "$0")"

usage() {
    echo "使用方法: ${SCRIPT_NAME} &lt;削除対象ディレクトリ&gt; &#91;保持日数]"
    echo "  削除対象ディレクトリ  : バックアップファイルのあるディレクトリ"
    echo "  保持日数              : 何日前までのファイルを残すか (デフォルト: 10)"
    exit 1
}

# --- 引数チェック ---
if &#91;&#91; $# -lt 1 || "$1" == "-?" || "$1" == "-h" || "$1" == "--help" ]]; then
    usage
fi

TARGET_DIR="$1"
DAYS="${2:-10}"

# --- 数値チェック ---
if ! &#91;&#91; "$DAYS" =~ ^&#91;0-9]+$ ]]; then
    echo "エラー: 保持日数には正の整数を指定してください: ${DAYS}" &gt;&amp;2
    exit 1
fi

# --- ディレクトリ存在チェック ---
if &#91;&#91; ! -d "$TARGET_DIR" ]]; then
    echo "エラー: ディレクトリが見つかりません: ${TARGET_DIR}" &gt;&amp;2
    exit 1
fi

# --- 削除基準日を算出 ---
DEL_DATE="$(date --date="${DAYS} days ago" +%Y%m%d)"
echo "削除基準日: ${DEL_DATE} より前のファイルを削除します (保持日数: ${DAYS}日)"

# --- 対象ファイルの処理 ---
# 数字始まりのファイル名から先頭8桁(YYYYMMDD)を取得して重複排除
while IFS= read -r file_date; do
    if &#91;&#91; "$file_date" &lt; "$DEL_DATE" ]]; then
        echo "削除: ${TARGET_DIR}/${file_date}*"
        rm -f -- "${TARGET_DIR}/${file_date}"*
    fi
done &lt; &lt;(
    ls -- "$TARGET_DIR" \
        | grep -E '^&#91;0-9]' \
        | awk '{ print substr($0, 1, 8) }' \
        | sort -u
)

echo "完了"</code></pre>



<h2 class="wp-block-heading"><span id="toc15">リストアする場合の注意点</span></h2>



<p class="wp-block-paragraph">リストアスクリプトでは、バックアップファイルのリストが表示されますが、<br>必ず、<span class="marker-under-red">データベースとコンテンツのバックアップファイルのリスト番号（日付）は同じにする事</span>をお勧めします<br>また、バックアップサーバーなどへリストアする場合、URLが異なる場合があるかもしれません<br>その時は、<a href="https://www.kazuban.com/blog/mirror-site-v2/#toc12">こちらの作業が必要になる場合があります</a></p>



<p class="wp-block-paragraph">この作業をAIにスクリプト化してもらったのが、下記になります</p>



<h3 class="wp-block-heading"><span id="toc16">update_wp_url.sh</span></h3>



<pre class="wp-block-code has-cocoon-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-13"><code>#!/bin/bash

# ==========================
SCRIPT_DIR=$(dirname "$(readlink -f "${BASH_SOURCE&#91;0]}")")
export SCRIPT_DIR
#--- debug mode, set "DEBUG=1". -----
export DEBUG=
#------------------------------------
source "${SCRIPT_DIR}/Header.sh"
source "${SCRIPT_DIR}/WordPress_Config_Data.sh"
# ===== 設定 =====
DB_USER="root"
DB_PASS=${MYSQL_ROOT_PASSWD}
DB_NAME=${DATABASE}
OLD_URL="http://www.hogehoge.com/blog"
NEW_URL="http://www2.hogehoge.com/blog"

# ===== 実行前確認 =====
echo "=== WordPress URL変更スクリプト ==="
echo "DB      : $DB_NAME"
echo "変更前  : $OLD_URL"
echo "変更後  : $NEW_URL"
echo ""
read -p "続行しますか？ (y/N): " confirm
&#91;&#91; "$confirm" != "y" &amp;&amp; "$confirm" != "Y" ]] &amp;&amp; echo "キャンセルしました。" &amp;&amp; exit 0

# ===== 変更前の値を確認 =====
echo ""
echo "--- 変更前 ---"
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "SELECT option_id, option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');"

# ===== UPDATE実行 =====
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "UPDATE wp_options SET option_value = '$NEW_URL' WHERE option_id = 1 OR option_id = 2;"

echo ""
echo "--- 変更後 ---"
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e \
  "SELECT option_id, option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');"

echo ""
echo "✅ 完了しました。"</code></pre>



<h2 class="wp-block-heading"><span id="toc17">自動バックアップ</span></h2>



<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/#toc10">こちらでも、紹介していますが</a>、「crontab」に下記のように設定する事で、毎日２時に自動バックアップできるようになります</p>



<pre class="wp-block-code"><code>00 2 * * *        /home/kazuban/Backup/bin/Wp-Backup.sh all</code></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RockyLinux9.３で自宅サーバーを再構築V07・WordPress のバックアップとリストア</title>
		<link>https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Mon, 08 Jan 2024 01:58:11 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[RockyLinux9.3]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[自宅サーバー]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=8476</guid>

					<description><![CDATA[ここまでで、新しい環境「RocyLinux9.3」でWordPressが動作できました。今回の目的は、旧サーバー「centOS7」環境を「RocyLinux9.3」へ移行する事です。まずは「centOS7」のWordPr [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ここまでで、新しい環境「RocyLinux9.3」でWordPressが動作できました。<br>今回の目的は、旧サーバー「centOS7」環境を「RocyLinux9.3」へ移行する事です。<br>まずは「centOS7」のWordPressデータのバックアップを取り、そのデータを<br>「RocyLinux9.3」へリストアする方法を説明します。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">WordPressバックアップ</a><ol><li><a href="#toc2" tabindex="0">データベース・MariaDBのバックアップ</a></li><li><a href="#toc3" tabindex="0">データベース・MariaDBのリストア</a></li><li><a href="#toc4" tabindex="0">データファイル・wp-content のバックアップ</a></li><li><a href="#toc5" tabindex="0">データファイル・wp-content のリストア</a></li></ol></li><li><a href="#toc6" tabindex="0">WordPress 自動バックアップ</a><ol><li><a href="#toc7" tabindex="0">MariaDBのバックアップスクリプト</a></li><li><a href="#toc8" tabindex="0">wp-content のバックアップスクリプト</a></li><li><a href="#toc9" tabindex="0">自動バックアップ</a></li><li><a href="#toc10" tabindex="0">リストア、スクリプト</a></li></ol></li><li><a href="#toc11" tabindex="0">復元の確認</a><ol><li><a href="#toc12" tabindex="0">記事のリンクへ飛べない！</a></li><li><a href="#toc13" tabindex="0">パーマリンク</a></li><li><a href="#toc14" tabindex="0">.htaccess</a></li><li><a href="#toc15" tabindex="0">mod_rewriteモジュール</a></li><li><a href="#toc16" tabindex="0">Apacheの、AllowOverrideの設定</a></li></ol></li><li><a href="#toc17" tabindex="0">RockyLinux9.3で自宅サーバーを再構築・記事一覧</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WordPressバックアップ</span></h2>



<p class="wp-block-paragraph">バックアップは、データベースとデータファイルを行います。<br>データベースは、MariaDBが管理保存しています<br>投稿記事や設定などが保存されています。<br>データファイルは、WordPress ディレクトリの、「wp-content」内のデータで<br>主に、テーマやプラグイン、画像データなどが保存されているデータです。</p>



<h3 class="wp-block-heading"><span id="toc2">データベース・MariaDBのバックアップ</span></h3>



<p class="wp-block-paragraph">データベースは、「mysqldump」でバックアップします。<br>データベース値は前回の例を参考にします。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">・管理者パスワード： hogehoge_passwd<br>・データベース名：WpDb<br>・ユーザー名:WpAdmin<br>・パスワード:WpPasswd<br>・データベースホスト:localhost</p>
</blockquote>



<p class="wp-block-paragraph">前回例を参考にすると、コマンドのパラメータは、下記になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">-u ユーザー名：WpAdmin <br>-p ユーザーパスワード：WpPasswd <br>-h ホスト名：localhost <br>-A すべてのデータベースの意味</p>



<p class="wp-block-paragraph">バックアップファイル名：WordPress.bak</p>
</blockquote>



<p class="wp-block-paragraph">「mysqldump」が吐き出したデータを出力リダイレクト「&gt;」でファイルに保存します</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-14"><code>$ mysqldump -u WpAdmin -pWpPasswd  -h localhost -A &gt; WordPress.bak</code></pre>



<h3 class="wp-block-heading"><span id="toc3">データベース・MariaDBのリストア</span></h3>



<p class="wp-block-paragraph">バックアップは、「mysqldump」で行いましたが、リストアは「mysql」でできます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">-u ユーザー名：root<br>-p 管理者パスワード：hogehoge_passwd<br>-データベース名：WpDb<br><br>バックアップファイル名：WordPress.bak</p>
</blockquote>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-15"><code>$ mysql -u root -phogehoge_passwd WpDb &lt; WordPress.bak</code></pre>



<p class="wp-block-paragraph">これで、データベースのリストアは完了ですが、もしバックアップ元とバックアップ先の<br>URLなどの設定を違えたい場合には、<a href="https://www.kazuban.com/blog/mirror-site-v2/#toc11">ここを参考にして</a>、内容を書き換えます。</p>



<h3 class="wp-block-heading"><span id="toc4">データファイル・wp-content のバックアップ</span></h3>



<p class="wp-block-paragraph">WordPressをインストール後、投稿により追加変更される<br>重要なディレクトリが「wp-content」です。<br>したがって、定期的に「wp-content」をバックアップしておくと、上記のデータベース復元<br>と共に「wp-content」ディレクトリを書き換える事で、バックアップ時の状態へ戻す事ができます。<br>日々の更新により「wp-content」内の全てが更新されていく訳ではありませんが<br>作業の単純化のために、「wp-content」全てをバックアップする事にします。<br>バックアップ作業は簡単です、適当なバックアップ保存用のディレクトリを用意し<br>「 [WordPressディレクトリ]/wp-content」を圧縮し、保存用ディレクトリに保存しておきます。<br>バックアップしたファイル名には、日付を付けておくと、バックアップ時期がわかりやすいです。<br>筆者は、下記のような設定で運用します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">バックアップ保存ディレクトリ：/home/hogehoge/BackupDir/<br>バックアップ保存ファイル名：20240103-Wp-content.tar.gz<br>バックアップ元ディレクトリ：/home/www/html/blog/wp-content/</p>
</blockquote>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-16"><code>$ tar czf /home/hogehoge/BackupDir/20240103-Wp-content.tar.gz  /home/www/html/blog/wp-content/ </code></pre>



<h3 class="wp-block-heading"><span id="toc5">データファイル・wp-content のリストア</span></h3>



<p class="wp-block-paragraph">データファイルの復元は上記のデータベースの復元と共に行う事が重要です。<br>基本的には、バックアップされているディレクトリと入れ換えるだけですが<br>いきなり入れ替えでは戻せなくなるので、まずは既存を名前変更で残しておきます。<br>・圧縮保存されている、バックアップファイルを展開<br>・既存の、「WordPressディレクトリ」/wp-content/ を「wp-content_bak」などに変更<br>・展開された「バックアップディレクトリ」内の「wp-content」を<br>「WordPressディレクトリ」に移動。<br>・移動された「wp-content」の属性を「apacheユーザー」属性にすべて変更<br>この作業で、サイトへアクセスすると、バックアップ時の状態になっています。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-17"><code>$ cd /home/hogehoge/BackupDir/
$ tar xzf ./20240103-Wp-content.tar.gz
$ ls
20240103-Wp-content.tar.gz  <strong>home</strong>

$ sudo mv /home/www/html/blog/wp-content/ /home/www/html/blog/wp-content_bak/
$ sudo mv ./home/www/html/blog/wp-content/ /home/www/html/blog/
$ sudo chown <strong>-R</strong> apache.apache /home/www/html/blog/wp-content
$ ls -la /home/www/html/blog/
・
<strong>drwxr-xr-x.</strong>  6 <strong><font color="yellow">apache apache</font></strong>    84 1月 3 11:15 <strong>wp-content</strong>
drwxr-xr-x. 10 apache apache   164 1月 3 9:29 wp-content_bak
・</code></pre>



<h2 class="wp-block-heading"><span id="toc6">WordPress 自動バックアップ</span></h2>



<p class="wp-block-paragraph">WordPress には、バックアップのプラグインもありますが、自宅サーバーなど<br>シェルが利用できる環境であれば、シェルスクリプトを組む事で自動バックアップが可能になります。</p>



<p class="wp-block-paragraph">バックアップさせるシェルスクリプトを作成します。<br>シェルスクリプトの構文や文法は、ネット上に情報がありますのでそちらで確認してください。<br>まずは、シェルシェルスクリプトを置くディレクトリを作成します。<br>筆者は、「管理ユーザーのホームディレクト」/bin/ としました。<br>さらに、バックアップを置くディレクトリも作成します。<br>「ホームディレクト」/Backup/を作成し、「Backup」の下に「MariaDB」と「Wp-content」を作成し、この中に保存しようと思います。<br>バックアップ用のディレクトリは、事前に作成しておきます。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-18"><code>$ cd
$ mkdir ./bin
$ mkdir ./Backup
$ mkdir ./Backup/MariaDB
$ mkdir ./Backup/Wp-content</code></pre>



<pre class="wp-block-code"><code>/home/hogehoge
├─<strong>Backup</strong>
│  ├─<strong>MariaDB</strong>       &lt;--- データベース用
│  └─<strong>Wp-content</strong>    &lt;---　データファイル用
├─<strong>bin</strong>         &lt;---- 自動バックアップスクリプト
├─Desktop
├─Documents
├─Downloads
├─Music
├─Pictures
├─Public
├─Templates
└─Videos</code></pre>



<h3 class="wp-block-heading"><span id="toc7">MariaDBのバックアップスクリプト</span></h3>



<p class="wp-block-paragraph">スクリプト内では次の変数を定義します。<br>変数は、自分の環境に合わせて編集します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">BackupDir=&#8221;/home/hogehoge/Backup/MariaDB&#8221; #バックアップ用ディレクトリ<br>MysqlUser=&#8221;WpAdmin&#8221;                                     #ユーザー名<br>MysqlUserPasswd=&#8221;WpPasswd&#8221;                         #ユーザーパスワード<br>LOG=&#8221;mariadb_backup.log&#8221;                              #バックアップログファイル</p>



<p class="wp-block-paragraph">バックアップファイル名は、日付+&#8221;-MariaDB.bak&#8221; を自動設定する仕様にします。</p>
</blockquote>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-19"><code>#!/bin/sh
#
#  MariaDB_Backup.sh    2024/01/03 by kazuban
#
#------------------------------------
BackupDir="/home/hogehoge/Backup/MariaDB"
MysqlUser="WpAdmin"
MysqlUserPasswd="WpPasswd"
LOG="mariadb_backup.log"
#------------------------------------

cd $BackupDir
echo "`date` Execute Backup!! " >> $LOG

DATE=`date '+%Y%m%d'`
FILENAME="$DATE-MariaDB.bak"
CMD="mysqldump -u $MysqlUser -p$MysqlUserPasswd -h localhost -A " 
echo $CMD >> $LOG
echo $CMD " > $FILENAME"
$CMD  > $FILENAME 
echo "`date` ------------ End" >> $LOG
</code></pre>



<p class="wp-block-paragraph">このファイルを、適当なファイル名で、スクリプト用ディレクトリへ保存します。<br>筆者は「/home/hogehoge/bin/」に「MariaDB_Backup.sh」で保存しました。 <br>このファイルは、実行できるように、実行権限を付けます</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-20"><code>$ chmod 700 /home/hogehoge/bin/MariaDB_Backup.sh </code></pre>



<h3 class="wp-block-heading"><span id="toc8">wp-content のバックアップスクリプト</span></h3>



<p class="wp-block-paragraph">wp-contentディレクトリは、「home/hogehoge/Backup/Wp-content/に保存します。<br>こちらの変数も、自分の環境に合わせます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">BackupDir=&#8221;/home/hogehoge/Backup/Wp-content&#8221; #バックアップ用ディレクトリ<br>BackupSorceDir=&#8221;/home/www/html/blog/wp-content&#8221; #バックアップ元<br>LOG=&#8221;wp-content_backup.log&#8221;                              #バックアップログファイル</p>



<p class="wp-block-paragraph">バックアップディレクトリは圧縮しファイル名は、<br>日付+&#8221;-Wp-content.tar.gz&#8221; を自動設定する仕様にします。</p>
</blockquote>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-21"><code>#!/bin/sh
#
#	Wp-Content_Backup.sh    2024/01/03 by kazuban
#
#--------------------------------------------
BackupToDir="/home/hogehoge/Backup/Wp-content"
BackupSorceDir="/home/www/html/blog/wp-content"
LOG="wp-content_backup.log"


cd $BackupToDir
echo "`date` Execute Backup!! " >> $LOG

DATE=`date '+%Y%m%d'`
FILENAME="$DATE-Wp-content.tar.gz"
PARA="czf"

CMD="tar $PARA $FILENAME $BackupSorceDir/" 
echo $CMD >> $LOG
echo $CMD
$CMD  > /dev/null 2>&amp;1 
echo "`date` ------------ End" >> $LOG

</code></pre>



<p class="wp-block-paragraph">このファイルも同様に「Wp-ContentBackup.sh」で保存しました。 <br>このファイルにも、実行できるように、実行権限を付けます</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-22"><code>$ chmod 700 /home/hogehoge/bin/Wp-Content_Backup.sh</code></pre>



<h3 class="wp-block-heading"><span id="toc9">自動バックアップ</span></h3>



<p class="wp-block-paragraph">ここでの例では、/home/hogehoge/bin ディレクトリ内にスクリプトを作成しました<br>まずは、正常に動作するか、確認してみます。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-23"><code>$ cd /home/hogehoge/bin
$ ls      &lt;---- 作成したスクリプト確認
MariaDB_Backup.sh  Wp-Content_Backup.sh  &lt;----- スクリプト名確認
・
・
$ /home/hogehoge/bin/MariaDB_Backup.sh  &lt;----- スクリプト実行
mysqldump -u WpAdmin -pWpPasswd -h localhost -A  &gt; 20240107-MariaDB.bak
                                        &lt;---- 正常終了
$ /home/kazu/hogehoge/Wp-Content_Backup.sh  &lt;----- スクリプト実行
tar czf 20240107-Wp-content.tar.gz /home/www/html/blog/wp-content/
                                        &lt;---- 正常終了
$ ls /home/hogehoge/Backup/MariaDB/
20240107-MariaDB.bak  mariadb_backup.log  &lt;---- 作成されている
$ ls /home/hogehoge/Backup/Wp-content
20240107-Wp-content.tar.gz wp-content_backup.log  &lt;----- 作成されている</code></pre>



<p class="wp-block-paragraph">スクリプトの正常動作が確認できたら、自動バックアップするようにスケジューリングします<br>スケジューリングは、「crontab」コマンドで行います。<br>「crontab」は、実行時間を、「分」「時」「日」「月」「曜日」で設定し、<br>実行したいコマンドを書きます。<br>例えば、朝６：３０に「MariaDB.sh」を実行したい場合には、下記になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">30 06 * * * /home/hogehoge/bin MariaDB.sh</p>
</blockquote>



<p class="wp-block-paragraph">定義済みのスケジュールは「crontab -l」で確認でます。<br>定義されていない場合には、なにもでてきません。<br>定義するには、「crontab -e」で行います。<br>例として、AM3:00に「MariaDB_Backup.sh」、AM3:30に「Wp-Content_Backup.sh」<br>をスケジュールしてみます。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-24"><code>$ crontab -e     &lt;--- -eオプションで設定
00 3 * * *       /home/hogehoge/bin/MariaDB_Backup.sh
30 3 * * *       /home/hogehoge/bin/Wp-Content_Backup.sh
・
・
$ crontab -l     &lt;--- -lオプションで確認
</code></pre>



<p class="wp-block-paragraph">これで、毎日WordPressの自動バックアップができます。</p>



<h3 class="wp-block-heading"><span id="toc10">リストア、スクリプト</span></h3>



<p class="wp-block-paragraph">リストア用のスクリプトはとちょっと面倒です。<br>いきなり、リストアしてしまったら、「あ～」直前に戻したいぃ・・・<br>になるかもしれません。<br>やはり、仕様としてはリストア直前にバックを取ってから実行したほうが安全です。<br>既存のバックアップ仕様の組込など考えると、結構面倒ですしリストア自体は、<br>バックアップのように定期的にやるものではないので、手動でやったほうが安全かもしれません。<br>ある程度、バックアップファイルの実績がとれたら、リストアスクリプトも作成しようと思います。</p>



<h2 class="wp-block-heading"><span id="toc11">復元の確認</span></h2>



<p class="wp-block-paragraph"><a href="#toc3">データベース・MariaDBのリストア</a>、<a href="#toc5">データファイル・wp-content のリストア</a><br>今回は上記の方法で、手動で復元してみます。<br>手動復元が完了したら、ページを表示して確認してみましょう。<br>トップページは正常に表示されています。<br>管理画面での設定も、バックアップ前と同じになっています。<br>ところが・・・・・</p>



<h3 class="wp-block-heading"><span id="toc12">記事のリンクへ飛べない！</span></h3>



<p class="wp-block-paragraph">記事をクリックしても、そのリンクが「Not Founf」で開きません。</p>



<figure class="wp-block-image size-full has-custom-border"><img fetchpriority="high" decoding="async" width="509" height="115" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/not-found.png" alt="" class="wp-image-8484" style="border-width:2px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/not-found.png 509w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/not-found-500x113.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/not-found-300x68.png 300w" sizes="(max-width: 509px) 100vw, 509px" /></figure>



<h3 class="wp-block-heading"><span id="toc13">パーマリンク</span></h3>



<p class="wp-block-paragraph">調べてみると、「パーマリンク」が怪しいです。</p>



<p class="wp-block-paragraph"><a href="https://haniwaman.com/permalink-not-reflected/#index_id3">https://haniwaman.com/permalink-not-reflected/#index_id3</a><br><a href="https://irohaplat.com/wordpress-httpd-conf-setting-for-permanentlink/">https://irohaplat.com/wordpress-httpd-conf-setting-for-permanentlink/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="546" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink-800x546.png" alt="" class="wp-image-8485" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink-800x546.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink-500x341.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink-300x205.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink-768x524.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/parmalink.png 1115w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">「基本」にしてみると、正常にリンクできるようになりました。<br>ところが、いままでの設定の「投稿名」にすると、リンクエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc14">.htaccess</span></h3>



<p class="wp-block-paragraph">WordPressのパーマリンクは、「変更を保存」ボタンを押す事で、サーバーの<br>「WordPress」ディレクトリへ「.htaccess」を作成し、リンク内容を書き込むようです。<br>確かに、「変更を保存」実行前までは、「WordPress」ディレクトリで「ls -la」しても、「.htaccess」は存在していませんでしたが「変更を保存」する事で、自動作成されました。<br>ところが、これでも、リンクエラーは解消しません。<br></p>



<h3 class="wp-block-heading"><span id="toc15">mod_rewriteモジュール</span></h3>



<p class="wp-block-paragraph">「<strong>mod_rewrite.so</strong>」モジュールが組み込まれているかを確認します。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-25"><code>$ vi /etc/httpd/conf.modules.d/00-base.conf
・
#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#

・

・

LoadModule request_module modules/mod_request.so
<strong>LoadModule rewrite_module modules/mod_rewrite.so</strong>
LoadModule setenvif_module modules/mod_setenvif.so
・</code></pre>



<p class="wp-block-paragraph">モジュールは読み込まれています。</p>



<h3 class="wp-block-heading"><span id="toc16">Apacheの、AllowOverrideの設定</span></h3>



<p class="wp-block-paragraph">Apacheの設定ファイル、「httpd.conf」を確認してみます。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-26"><code># vi /etc/httpd/conf/httpd.conf
・
・
# Further relax access to the default document root:
#&lt;Directory "/var/www/html"&gt;
&lt;Directory "/home/www/html"&gt;
・
    <strong>AllowOverride None</strong>
・
&lt;/Directory&gt;</code></pre>



<p class="wp-block-paragraph">デフォルトでは「 AllowOverride <strong>None</strong>」になっていました。<br>この設定を「<strong>All</strong>」にしたほうがよさそうですが、筆者の「WordPress」のディレクトリは<br>「/home/www/html/blog」なので、<span class="marker-under">「/home/www/html/」ではなくて</span><br><span class="marker-under-red"><span class="marker-under">「/home/www/html/blog」</span></span>を<span class="marker-under">「AllowOverride All」</span>設定にします。<br>追加の設定は、<span class="marker-under-red">直接「httpd.conf」に追加する方法と、「/etc/httpd/conf.d」のディレクトリ内に </span><br><span class="marker-under-red">「 [WordPress用].conf 」のファイルを追加する方法</span>があります。<br>「confファイル」追加の有効性は、「httpd.conf」の「<strong>IncludeOptional</strong>」で確認できます。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-27"><code>$ vi /etc/httpd/conf/httpd.conf
・
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
<strong>IncludeOptional conf.d/*.conf</strong>
・
・</code></pre>



<p class="wp-block-paragraph">この設定であれば、直接「httpd.conf」を編集しなくても、<br>後者の「/etc/httpd/conf.d」に「wordpress.conf」を追加する方法が可能です。</p>



<pre class="wp-block-code has-ex-a-color has-black-background-color has-text-color has-background has-link-color wp-elements-28"><code>$ sudo vi /etc/httpd/conf.d/wordpress.conf
&lt;Directory "/home/www/html/blog"&gt;
    <strong>AllowOverride All</strong>
&lt;/Directory&gt;
・
・          &lt;-------- 書き込み保存で新規作成後、httpd を再起動
$ sudo systemctl restart httpd</code></pre>



<p class="wp-block-paragraph">この設定で、正常にリンク先にアクセスできるようになりました。<br>これで、バックアップは定期的に自動作成されているので、<br>もしトラブルなどあった場合には、以前の状態に復元する事ができますし<br>今回の記事のテーマの、サーバー本体の引っ越しにも、使用できます。</p>



<h2 class="wp-block-heading has-indigo-background-color has-background is-style-bottom-margin-1em has-bottom-margin"><span id="toc17">RockyLinux9.3で自宅サーバーを再構築・記事一覧</span></h2>



<div class="wp-block-columns has-watery-red-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rockylinux9-3-install"><img loading="lazy" decoding="async" width="524" height="354" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9.png" alt="" class="wp-image-8330" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9.png 524w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-500x338.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rockylinux9-300x203.png 300w" sizes="(max-width: 524px) 100vw, 524px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rockylinux9-3-install">インストール</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:4px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rockylinux9-3-ssh"><img loading="lazy" decoding="async" width="416" height="343" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rlogin.png" alt="" class="wp-image-8440" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/rlogin.png 416w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/rlogin-300x247.png 300w" sizes="(max-width: 416px) 100vw, 416px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rockylinux9-3-ssh">SSHでリモート管理</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-red-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rockylinux9-3-firewalld"><img loading="lazy" decoding="async" width="615" height="613" src="https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall.png" alt="" class="wp-image-8443" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall.png 615w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-500x498.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-300x299.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-100x100.png 100w, https://www.kazuban.com/blog/wp-content/uploads/2023/11/Firewall-150x150.png 150w" sizes="(max-width: 615px) 100vw, 615px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rockylinux9-3-firewalld">firewalldでアクセス制御</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:4px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized wp-duotone-unset-1"><a href="https://www.kazuban.com/blog/rokeylinux9-3-apache"><img loading="lazy" decoding="async" width="1024" height="390" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache.png" alt="" class="wp-image-8477" style="object-fit:contain;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-500x190.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-800x305.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-300x114.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/Apache-768x293.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-apache">Apache編</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-red-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rokeylinux9-3-php82-maria105"><img loading="lazy" decoding="async" width="1785" height="1321" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb.png" alt="" class="wp-image-8478" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb.png 1785w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb-500x370.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb-800x592.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb-300x222.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb-768x568.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/php-mariadb-1536x1137.png 1536w" sizes="(max-width: 1785px) 100vw, 1785px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-php82-maria105">PHP8.2とMariaDB10.5編</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:4px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-install"><img loading="lazy" decoding="async" width="2000" height="1080" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative.png" alt="" class="wp-image-8479" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative.png 2000w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative-500x270.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative-800x432.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative-300x162.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative-768x415.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/WordPress-logotype-alternative-1536x829.png 1536w" sizes="(max-width: 2000px) 100vw, 2000px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-install">WordPress インストール</a></p>
</div>
</div>



<div class="wp-block-columns has-luminous-vivid-orange-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore.png" alt="" class="wp-image-8480" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore.png 1024w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-500x500.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-800x800.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-300x300.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-768x768.png 768w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-100x100.png 100w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/wordpress-backup-restore-150x150.png 150w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rokeylinux9-3-wordpress-backup">WordPress のバックアップとリストア</a></p>
</div>
</div>



<div class="wp-block-columns has-watery-green-background-color has-background is-style-bottom-margin-1em has-bottom-margin is-layout-flex wp-container-core-columns-is-layout-cb1de518 wp-block-columns-is-layout-flex" style="border-style:none;border-width:0px;border-radius:0px">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<figure class="wp-block-image size-full is-resized"><a href="https://www.kazuban.com/blog/rockylinux9-3-postfix"><img loading="lazy" decoding="async" width="900" height="568" src="https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix.png" alt="" class="wp-image-8483" style="object-fit:cover;width:100px;height:70px" srcset="https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix.png 900w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-500x316.png 500w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-800x505.png 800w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-300x189.png 300w, https://www.kazuban.com/blog/wp-content/uploads/2023/12/postfix-768x485.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/rockylinux9-3-postfix">postfix で送信専用メールサーバー構築</a></p>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CentOS8 でミラーサイトを作る／WordPress のバックアップ</title>
		<link>https://www.kazuban.com/blog/mirror-site-v2/</link>
		
		<dc:creator><![CDATA[kazuban]]></dc:creator>
		<pubDate>Sun, 22 Mar 2020 00:36:31 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Linux (CentOS、Rocky、Ubuntu)]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[バックアップ]]></category>
		<category><![CDATA[覚書]]></category>
		<guid isPermaLink="false">https://www.kazuban.com/blog/?p=1992</guid>

					<description><![CDATA[前回、Webサーバーの設定まで終了したので、WordPress をインストールして、このサイトのミラーサイトにしておこうと思っていますまずはWordPress を動作させるに、PHP と　MySql　をインストールします [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://www.kazuban.com/blog/mirror-site-v1/">前回、Webサーバーの設定まで終了</a>したので、WordPress をインストールして、このサイトのミラーサイトにしておこうと思っています<br>まずはWordPress を動作させるに、PHP  と　MySql　をインストールしますが、<a href="https://www.kazuban.com/blog/php7-3/">以前</a>とそれほど変わらないと思っています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">WordPress インストール</a><ol><li><a href="#toc2" tabindex="0">PHP7.3 のインストール</a></li><li><a href="#toc3" tabindex="0">php-fpmの起動</a></li><li><a href="#toc4" tabindex="0">PHP 基本的な設定</a></li><li><a href="#toc5" tabindex="0">MariaDB 10 のインストール</a></li><li><a href="#toc6" tabindex="0">mysql_secure_installationの実行</a></li><li><a href="#toc7" tabindex="0">文字コードの設定</a></li><li><a href="#toc8" tabindex="0"> WordPress インストール </a></li></ol></li><li><a href="#toc9" tabindex="0">バックアップ</a><ol><li><a href="#toc10" tabindex="0">WordPress データベースのバックアップ</a></li><li><a href="#toc11" tabindex="0">「mysqldump」でバックアップ</a><ol><li><a href="#toc12" tabindex="0">ミラーサイトのURL情報を変更：①mysql で設定の情報を書き換える</a></li><li><a href="#toc13" tabindex="0">ミラーサイトのURL情報を変更：②wp-config.phpを編集する</a></li><li><a href="#toc14" tabindex="0">メニューの「カスタムリンク」でうまく設定できない場合がありました</a></li></ol></li><li><a href="#toc15" tabindex="0">wp-content をバックアップ</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">WordPress インストール</span></h2>



<p class="wp-block-paragraph">PHP 、MariaDB、WordPress とインストールしていきます</p>



<h3 class="wp-block-heading"><span id="toc2">PHP7.3 のインストール</span></h3>



<p class="wp-block-paragraph">centOS8 のデフォルトは、PHP7.2なので、remiレポジトリを導入しPHP7,3をインストール</p>



<pre class="wp-block-preformatted"># dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module disable php
# dnf module install -y php:remi-7.3
# php -v</pre>



<h3 class="wp-block-heading"><span id="toc3">php-fpmの起動</span></h3>



<pre class="wp-block-preformatted"># cp -p /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
# vi /etc/php-fpm.d/www.conf
  ・
  ・
 listen.owner = apache
 listen.group = apache
 listen.mode = 0666


# systemctl start php-fpm
# systemctl enable php-fpm
# systemctl is-enabled php-fpm
 enabled</pre>



<h3 class="wp-block-heading"><span id="toc4">PHP 基本的な設定</span></h3>



<pre class="wp-block-preformatted"># cp -p /etc/php.ini /etc/php.ini.org
# vi /etc/php.ini
 expose_php = Off
 post_max_size = 80M
 upload_max_filesize = 80M
 date.timezone = "Asia/Tokyo"
 mbstring.language = Japanese
 mbstring.internal_encoding = UTF-8
 mbstring.http_input = UTF-8
 mbstring.http_output = pass
 mbstring.encoding_translation = On
 mbstring.substitute_character = none 

$ php -r 'phpinfo();' |  grep 'PHP Version'
PHP Version =&gt; 7.3.15</pre>



<h3 class="wp-block-heading"><span id="toc5">MariaDB 10 のインストール</span></h3>



<pre class="wp-block-preformatted">$ dnf list | grep maria</pre>



<p class="wp-block-paragraph">centOS8 になり、デフォルトで「MariaDB 10」が導入されているので、そのままインストール</p>



<pre class="wp-block-preformatted"># dnf install -y mariadb-server mariadb mariadb-devel
 完了しました!

# systemctl restart mariadb
# systemctl status mariadb
# systemctl enable mariadb</pre>



<h3 class="wp-block-heading"><span id="toc6">mysql_secure_installationの実行</span></h3>



<p class="wp-block-paragraph">管理者パスワードは、事前に決めてメモしておく<br>　　 ★管理者パスワード　：　 hogehoge_passwd<br>このパスワードは、mysql コマンドで「root」ユーザーのパスワード となる</p>



<pre class="wp-block-preformatted">$ sudo mysql_secure_installation
・
Set root password? [Y/n] y                &lt;--------------- 管理者パスワード
Remove anonymous users? [Y/n] y       &lt;--------- 匿名ユーザー削除
Disallow root login remotely? [Y/n] y     &lt;----- リモート管理者ログイン拒否
Remove test database and access to it? [Y/n] y &lt;---- test データベース削除
Thanks for using MariaDB! </pre>



<h3 class="wp-block-heading"><span id="toc7">文字コードの設定</span></h3>



<pre class="wp-block-preformatted"># cp -p /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.org 
# vi mariadb-server.cnf
   ・
   ・
 [mariadb]                 &lt;------ 追加  character-set-server = utf8mb4 
 [client-mariadb]          &lt;------ 追加  default-character-set =　utf8mb4 

# systemctl start mariadb 
# systemctl status mariadb</pre>



<p class="wp-block-paragraph">データベースにアクセスし、確認</p>



<pre class="wp-block-preformatted">$ mysql -uroot -p「★管理者パスワード」</pre>



<pre class="wp-block-preformatted">MariaDB [(none)]&gt; show variables like "chara%";
 +--------------------------+------------------------------+
 | Variable_name            | Value                        |
 +--------------------------+------------------------------+
 | character_set_client     | utf8mb4                      |
 | character_set_connection | utf8mb4                      |
 | character_set_database   | utf8mb4                      |
 | character_set_filesystem | binary                       |
 | character_set_results    | utf8mb4                      |
 | character_set_server     | utf8mb4                      |
 | character_set_system     | utf8                         |
 | character_sets_dir       | /usr/share/mariadb/charsets/ |
 +--------------------------+------------------------------+

MariaDB [(none)]&gt; quit
 Bye</pre>



<h3 class="wp-block-heading"><span id="toc8"> WordPress インストール </span></h3>



<p class="wp-block-paragraph">centOS7時の記事を参考に、インストール</p>


<a href="https://www.kazuban.com/blog/wordpress-install/" title="自宅サーバでWordPressを動かそう。インストール" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="242" height="180" src="https://www.kazuban.com/blog/wp-content/uploads/2019/11/WordPressLogo.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.kazuban.com/blog/wp-content/uploads/2019/11/WordPressLogo.jpg 497w, https://www.kazuban.com/blog/wp-content/uploads/2019/11/WordPressLogo-300x223.jpg 300w" sizes="(max-width: 242px) 100vw, 242px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">自宅サーバでWordPressを動かそう。インストール</div><div class="blogcard-snippet internal-blogcard-snippet">前回までで、WordPress要求の PHPバージョン7.3以上、MySQLバージョン5.6またはMariaDBバージョン10.0以上の環境は出来上がっています。いよいよ、WordPress をインストールしようと思います。環境の確認インストール状況を確認するには、「rpm -qa 」や「yum l&#8230;</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.kazuban.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.kazuban.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2019.11.12</div></div></div></div></a>


<h2 class="wp-block-heading"><span id="toc9">バックアップ</span></h2>



<p class="wp-block-paragraph">とりあえず、WordPress は動作したと思うので、本サーバーのバックアップをしていきます、</p>



<h3 class="wp-block-heading"><span id="toc10">WordPress データベースのバックアップ</span></h3>



<p class="wp-block-paragraph">本サーバー側で作業していきます<br>まずは、バックアップを保存するディレクトリを作成し、データベースをバックアップ。データバースの、ユーザ名、ホスト名、パスワードは事前に明確にしておきます</p>



<ul class="wp-block-list">
<li>データベース名　　　　　｜ WpDb</li>



<li>ユーザー名　　　　　　　｜ WpAdmin</li>



<li>パスワード　　　　　　　｜ WpPasswd</li>



<li>データベースのホスト名　｜ localhost</li>
</ul>



<h3 class="wp-block-heading"><span id="toc11">「mysqldump」でバックアップ</span></h3>



<p class="wp-block-paragraph">・バックアップ作業用ディレクトリを作成<br>・本サーバーでデータベースをすべてバックアップ<br>・ミラーサーバーへコピー<br>・ミラーサーバーのデータベースをリストア<br>・WordPress の設定をミラーサーバー用に変更</p>



<pre class="wp-block-preformatted">//バックアップ作業用ディレクトリ作成
$ cd ~
$ mkdir ./Backup
$ cd ./Backup/

//本サーバーでバックアップ
$ mysqldump -u  WpAdmin -pWpPasswd  -h localhost -A &gt; WordPress.bak

//バックアップファイルをミラーＰＣへコピー
// SSH のポート番号　54321 の場合
$ scp -P 54321 ./WordPress.bak 192.168.0.100:
Enter passphrase for key '/home/hogehoge/.ssh/id_ecdsa':

//ミラーサーバーのデータベースをリストア 
$ mysql -u root -p WpDb  &lt; WordPress.bak
 パスワード：  &lt;-- データベースのパスワードではなく、mysql の　root パスワード</pre>



<p class="wp-block-paragraph">これで、データベースのコピーは終了したが、WordPress の設定情報も更新されています。<br>したがって、本サーバーとミラーサーバーでは、アドレスが違うためミラーサイトへ直接のアクセスしても、内部的には本サーバーのURLで動作するので、正常に表示されません<br>データベースのWordPresのURL設定を変更する必要があります<br>変更方法は、mysqlのデータバース内容を直接変更する方法と、wordpressの設定ファイルで変更する方法を紹介します。<br>後者の方が簡単で通常のページは正常になりますが、投稿編集などの画面が英語になったり、保存できなかったりすることがあります<br>その場合は、①前者の作業で治ります。</p>



<h4 class="wp-block-heading"><span id="toc12">ミラーサイトのURL情報を変更：①mysql で設定の情報を書き換える</span></h4>



<pre class="wp-block-code"><code>//ミラーサイトでの作業
$ mysql -u root -p「rootパスワード」
 MariaDB &#91;(none)]&gt; show databases;
 +--------------------+
 | Database           |
 +--------------------+
 |  WpDb              |
 | information_schema |
 | mysql              |
 | performance_schema |
 +--------------------+
 4 rows in set (0.001 sec)
 MariaDB &#91;(none)]&gt; use WpDb
 MariaDB &#91;WpDb]&gt; select * from wp_options where option_name = "siteurl";
 +-----------+-------------+------------------------------+----------+
 | option_id | option_name | option_value                 | autoload |
 +-----------+-------------+------------------------------+----------+
 |         1 | siteurl     | http://www.hogehoge.com/blog | yes      |
 +-----------+-------------+------------------------------+----------+
 1 row in set (0.000 sec)
 MariaDB &#91;WpDb]&gt; select * from wp_options where option_name = "home";
 +-----------+-------------+------------------------------+----------+
 | option_id | option_name | option_value                 | autoload |
 +-----------+-------------+------------------------------+----------+
 |         2 | home        | http://www.hogehoge.com/blog | yes      |
 +-----------+-------------+------------------------------+----------+
 1 row in set (0.000 sec)

//次のコマンドで、www.hogehoge.com を www2.hogehoge.com に変更する
 MariaDB &#91;WpDatabase]&gt;update wp_options SET option_value = "http://www2.hogehoge.com/blog" where option_id = 1 OR option_id = 2;</code></pre>



<h4 class="wp-block-heading"><span id="toc13">ミラーサイトのURL情報を変更：②wp-config.phpを編集する</span></h4>



<pre class="wp-block-code"><code>#サーバーでの作業
#ブログのディレクトリへ移動
cd /home/www/html/blog/
# wp-config のバックアップを取る
sudo cp -p wp-config.php wp-config.php.bak

#編集
vi ./wp-config.php

#最後の行に、URL情報を追加
####
####
define('WP_HOME', 'http://www2.hogehoge.com/blog/');
define('WP_SITEURL', 'http://www2.hogehoge.com/blog/');
###
###
#保存
</code></pre>



<p class="wp-block-paragraph"><strong>確認:</strong>&nbsp;新しいURLで管理画面にログインし、「設定」&gt;「一般」でURLが正しく認識されているか確認します。&nbsp;</p>



<h4 class="wp-block-heading"><span id="toc14">メニューの「カスタムリンク」でうまく設定できない場合がありました</span></h4>



<p class="wp-block-paragraph">私の環境では、バックアップURLでほぼ正常に動作しましたが、一部のリンクで本サーバーURLへリンクされる場合が確認されました<br>調べてみると、必ずＮＧではないですが「カスタムリンク」でそのような現象が起きてます<br>カスタムリンクでは、「URL」項目に直接リンク先URLを設定しますが、そこに本サーバーのURLを設定している場合、うまく変換されず本サーバーへリンクしてしまう現象です<br>このリンク先のURLを相対パスにすることで、とりあえずは治りました</p>



<pre class="wp-block-code"><code>#カスタムリンク
https:&#47;&#47;www.hogehoge.com/blog/
    #　↓
    #相対アドレスへ変更
<strong>/blog/</strong></code></pre>



<ol class="wp-block-list">
<li></li>
</ol>



<p class="wp-block-paragraph">これで、ミラーサイト（www2.hogehoge.com）でも本サーバーと同様にWordPress にアクセスできるようになりました</p>



<h3 class="wp-block-heading"><span id="toc15">wp-content をバックアップ</span></h3>



<p class="wp-block-paragraph">投稿記事内容は、mysql に保存されていますが、テーマやアップロードしたメディアなどは、wp-content ディレクトリに保存されているようなので、これもバックアップします。<br>・WordPress インストールディレクトリへ移動<br>・tar コマンドで圧縮<br>・ミラーサイトへコピー<br>・ファイルをミラーサイトの作業ディレクトリへ移動<br>・展開<br>・展開された、wp-content ディレクトリをhttpd ユーザーアカウントに変更<br>・ミラーサイトのwp-contentディレクトリの名前変更<br>・作業ディレクトリのwp-content を移動</p>



<pre class="wp-block-preformatted">// wp-content をバックアップ
# cd /home/www/html/blog
# tar cvzf blog.tar.gz ./wp-content/

// blog.tar.gzを作業用のディレクトリに移動
# mv blog.tar.gz /home/hogehoge/Backup/

// アカウントの変更
# chown hogehoge.hogehoge blog.tar.gz

// ミラーサイトへコピー
# exit
$ cd /home/hogehoge/Backup/
$ scp -P 54321 ./blog.tar.gz 192.168.0.100:
Enter passphrase for key '/home/kazu/.ssh/id_ecdsa':

// ミラーサイトで作業
// ユーザーホームディレクトリにコピーされている
// 作業ディレクトリへ移動
$ mv ./blog.tar.gz ./Backup/
$ cd ./Backup/

// 展開
$ tar xvzf ./blog.tar.gz

// 展開されたディレクトリをhttpd ユーザーアカウントに変更
 $ sudo chown -R apache.apache ./wp-content/

// wordpress ディレクトリへ移動し、バックアップディレクトリ名を変更
$ cd /home/www/html/hogehoge.com/blog/
$ sudo mv wp-content wp-content.org

// オリジナルのディレクトリを移動
$ sudo mv ./wp-content /home/www/html/hogehoge.com/blog/
</pre>



<p class="wp-block-paragraph">これでミラーサイトのWordPress にログインできるはずなので<br> wordpress の「設定」⇒「一般設定」を確認</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
