WordPressのバックアップ(BackWPup)設定とcronでの定期実行
2023-11-14 記載
概要 : WordPressの定期バックアップをサーバーのcronで行う
Keyword : WordPress, BackWPup, cron,
WordPressのバックアップをとるためにプラグイン BackWPup をいれました。

https://ja.wordpress.org/plugins/backwpup/
私の設定 (個人的な備忘録)
■BackWPup › 設定
フォルダーを保護:チェックoff
URL で外部からジョブを開始するキー:
ログファイル用フォルダー:uploads/backwpup-logs/
■BackWPup › ジョブ
daily-wp-journal
一般 > このジョブは …:
データベースのバックアップ
ファイルのバックアップ
インストール済みプラグイン一覧
スケジュール > ジョブの開始方法
リンク https://web.cloudfree.jp/…
DBバックアップ > バックアップするテーブル
すべて
ファイル >
WordPress をインストールしたフォルダーをバックアップ
除外ページ: wp-admin wp-includes
コンテンツフォルダーをバックアップ
除外ページ: languages updraft upgrade upgrade-temp-backup
プラグインのバックアップ チェックoff
テーマのバックアップ
除外ページ: twentytwentyfour
twentytwentyfour-child はBackup
uploads フォルダーをバックアップ
除外ページ: wp-statistics backwpup-*
プラグイン > プラグイン一覧のファイル名
cloudfree-journal-wp.pluginlist.%Y-%m-%d
宛先フォルダー > バックアップを格納するフォルダー
uploads/backwpup-journal1-backups/
※公式サイトからDownloadして再生できるファイルは省くのと
おもに見て疲れるハッシュ値を省く変更
※ただしフォルダーを保護せず、かつハッシュ値を省きすぎると、
類推されてDownloadされてしまうので注意。
なのでハッシュ値ではなく自分固有の文字列に置換がよい。
ジョブの開始方法をリンクとしましたので
これを呼ぶphpファイルを造ります。
仮にphpファイル名を”cron_each10min.php”とします。
<?php
try {
// test
// https://cfsid.cloudfree.jp/cron_each10min.php
// cron設定
// /usr/bin/php8.2 /home/cfsid/cfsid.cloudfree.jp/public_html/cron_each10min.php
// /usr/bin/php7.4 /home/サーバーID/ドメイン名/public_html/xxx.php
mb_language('Japanese');
mb_internal_encoding('UTF-8');
date_default_timezone_set("Asia/Tokyo");
setlocale(LC_ALL, 'ja_JP.UTF-8');
// job
if (条件が一致したら ※codeは省略) {
//ジョブの開始方法リンクのURL
fopen('https://cfsid.cloudfree.jp/***/wp-cron.php?...&backwpup_run=runext&jobid=n', 'r');
}
} catch (exception $e) {
file_put_contents('cron_error.log', var_dump($e));
}
?>
file_put_contents でURLはphp.iniの設定で許可されているかを確認必要。
cloudfreeはOK(2023.11現在)
後のサーバのcron設定で、このphpファイルは10分ごとに呼ばれるようにします。それを想定して(条件が一致したら ※codeは省略) を記載するのですが、ここは各自の設定次第なので省略。
public_html配下においた場合、実行させるurlは
https://cfsid.cloudfree.jp/cron_each10min.php
になります。この段階でデバッグを終わらせておかないといけません。
バグがないなら、サーバーの管理パネルで[ Cron設定 ]を行います。

『シン・クラウド for Free』の嬉しいところはCron設定ができることです。
破格のサービスだと思います。
10分置きに先のphpファイルを処理するように設定しました。
ロジックを手持ちのファイルに置くようにすれば、サーバー引っ越し時の苦労が減ります。
Cronの設定は、PHPバージョンによって変わってきます。
/usr/bin/php8.2 /home/web/web.cloudfree.jp/public_html/cron_each10min.php
/usr/bin/php7.4 /home/サーバーID/ドメイン名/public_html/abc.php
という感じです。Cron設定は6本のみであとは cron_each10min.php 内部のロジックがすべて受け持つ、という構想です。
$dtNOW = new DateTime(‘now’);
$sYmd = $dtNOW->format(‘Y/m/d’);
$sHis = $dtNOW->format(‘H:i:s’);
などから条件一致を導きだして判定します。そこはゴソっと省略しています。
前回の実行時間を記録するなら実行ログが必要になります。