<?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>BASH | じじぃの引出し</title>
	<atom:link href="https://www.kazuban.com/blog/tag/bash/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.kazuban.com/blog</link>
	<description>なにかしら、皆さんの参考になれば幸いです！</description>
	<lastBuildDate>Mon, 08 Jun 2026 04:35:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.kazuban.com/blog/wp-content/uploads/2020/05/cropped-ICON-1-32x32.png</url>
	<title>BASH | じじぃの引出し</title>
	<link>https://www.kazuban.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress の「バックアップ・リストア」BASHスクリプト</title>
		<link>https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/</link>
					<comments>https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/#respond</comments>
		
		<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></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-db8e023e6e1cfc0bb1ea28937edb3636"><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-fdb162245c5ae88b8bde6aff6981db8a"><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> &#8221; &lt; /dev/tty&#8217; DEBUG<br>実行中、すべてのコマンドを実行する直前で指定文字（STEP>）プロンプトで一時停止<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-575fb2a5323ae743d77eedbdc438c478"><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> " &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-7499046ee69558135b4281b890568874"><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-3e684ce3afa6a29508f003665ce57d7a"><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-64a5ce5d8d3b788c20534c9eacfd6d5f"><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-41a22cc8c585189660e126f42ec94376"><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-3d9f5d54fd4be61dae1b88182aa57068"><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-a28f7d7ec979e0758768f998ce7ea057"><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 >= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" >&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}" >&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 \
    > "${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 を入力してください" >&amp;2
      exit 1
      ;;
  esac
}

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

# バックアップディレクトリの存在確認
if &#91;&#91; ! -d "${BACKUP_DIR}" ]]; then
  echo "エラー: バックアップディレクトリが存在しません: ${BACKUP_DIR}" >&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-fef61f113342594a7adec7d5d6d3a478"><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 "（バックアップファイルが見つかりません）" >&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 >= ${#BACKUP_FILES&#91;@]} )); then
      echo "エラー: 番号 ${input} は範囲外です（1〜${#BACKUP_FILES&#91;@]}）" >&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}" >&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} ディレクトリが見つかりません" >&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 "エラー: 階層がありません" >&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 を入力してください" >&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}" >&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-f6fe5a69aecaa3ebf64dfc0071ef4ec8"><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> " &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-9c8922dee15a171fe661e7414cd13d49"><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> " &lt; /dev/tty' DEBUG
#fi

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

usage() {
    echo "使用方法: ${SCRIPT_NAME} &lt;削除対象ディレクトリ> &#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}" >&amp;2
    exit 1
fi

# --- ディレクトリ存在チェック ---
if &#91;&#91; ! -d "$TARGET_DIR" ]]; then
    echo "エラー: ディレクトリが見つかりません: ${TARGET_DIR}" >&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"><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>
					
					<wfw:commentRss>https://www.kazuban.com/blog/rokeylinux9-7-wordpress-backup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
