【プラグインなし】WordPressの自動バックアップ方法

ITエンジニア

WordPressの自動バックアップ方法を知りたい。

でもこれくらいはプラグインを使いたくない。

こういった悩みを解決します。

この記事のポイント

●WordPressをプラグインなしで自動バックアップ方法

【プラグインなし】WordPressの自動バックアップ方法

WordPressをバックアップ理由

最悪の事態を備えて準備する。万が一サイトを消えったり、可怪しくなったりの事態を備えます。

契約するレンタルサーバによって自動的にバックアップされます。でも過信してはいけないです。自分で対策した方が安心です。コアサーバーなど格安のレンタルサーバの場合バックアップ機能が一部のプランしかできないため、自己対策必須です。

自動バックアップ方法

プログラムの知識が必要ですが、「一事が万事」で一回できたら後が楽です。

実現機能

●サーバー側自動的にファイル及びDBをバックアップ
●自動的にGoogleDriveに同期する

サーバー側プログラム設置

サーバー側がLinuxで、バックアップ実行プログラム(SHELL)を作成。

#!/bin/sh
#####################################################################################
# ファイルバックアップ
TARGETPATH=/virtual/username/public_html/
BKFOLDER=/virtual/username/backup/
LOG_DATE=`date '+%Y%m%d'`
cd ${TARGETPATH}
tar -zcf foreign-in-japan.com_${LOG_DATE}.tar.gz foreign-in-japan.com
wait
mv ${TARGETPATH}foreign-in-japan.com_${LOG_DATE}.tar.gz ${BKFOLDER}

# DBバックアップ
mysqldump -u username-p username--password=password > ${BKFOLDER}mysql.username.${LOG_DATE}.dump

#####################################################################################
# 正常終了

exit 0

「username」を自分のユーザー名に修正。「password」は自分のDBパスワードに修正。このファイルは「backup.sh」として、サーバーに配置。

サーバー側スケジュール設定

Linuxサーバーでスケジュール(cronジョブ)を設定する事が可能で、殆どのレンタルサーバでもcron機能を提供しています。Linuxの機能ので、設定方法が大体一緒で、これからコアサーバーの設定を元に説明します。

CRONジョブを新規作成。下記のようにスケジュールを設定。

上記は毎週日曜日23時30分からバックアップ実行します。

Win側プログラム設置

サーバー側だけでは不十分で、サーバーに何か不備があれば全部無駄になります。GoogleDriveなどに同期した方が安心です。レンタルサーバでその機能がないため、WinでPowerShell利用し自分で作りましょう。

まずWinSCPをインストールしましょう。WinSCPの公式HPへ

try
{
    # Load WinSCP .NET assembly
    Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

    # Setup session options
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "m2.coreserver.jp"
        UserName = "username"
        Password = "password"
        SshHostKeyFingerprint = "ssh-ed25519 255 7d:67:65:9c:b8:34:dc:03:f7:e3:74:a5:94:6f:6e:37"
    }

    $session = New-Object WinSCP.Session

    try
    {
        # Connect
        $session.Open($sessionOptions)

        $date = Get-Date -Format "yyyyMMdd"

        #new folder
        New-Item c:\WorkSpace\GoogleDrive\backup\blog\$date -ItemType Directory

        # Download files
        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary

        $transferResult =
            $session.GetFiles("/virtual/username/backup/mysql.username.$date.dump", "c:\WorkSpace\GoogleDrive\backup\blog\$date\", $False, $transferOptions)

        $transferResult =
            $session.GetFiles("/virtual/username/backup/foreign-in-japan.com_$date.tar.gz", "c:\WorkSpace\GoogleDrive\backup\blog\$date\", $False, $transferOptions)


        # Throw on any error
        $transferResult.Check()

        # Print results
        foreach ($transfer in $transferResult.Transfers)
        {
            Write-Host ("Download of {0} succeeded" -f $transfer.FileName)
        }

    }
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }

    exit 0
}
catch
{
    Write-Host "Error: $($_.Exception.Message)"
    exit 1
}

「username」を自分のユーザー名に修正。「password」は自分の接続パスワードに修正。このファイルは「backupWin.ps1」として保存。

SshHostKeyFingerprintについて下記コマンドで取得できます。

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
注意

Powershell実行する時、WinSCPnet.dllをロードできないエラーになったら、Powershellの許容バージョンの問題で、$pshomeパスのPowershellのフォルダにpowershell.exe.configを作りましょう。

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.7.03062"/>
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
    <runtime>
        <loadfromremotesources enabled="true"/>
    </runtime>
</configuration>

Winタスクスケジュール設定

Winのスケジュールを設定しましょう。「タスクスケジュール」開き

タスクスケジューラを起動する
Cortanaの検索窓に「タスク」と入力して、見つかった「タスク スケジューラ」をクリックする。

「タスクの作成」クリック

「全般」に「最上位の特権で実行する」をチェックする。

「トリガー」の設定

「操作」の設定:                                    プログラム:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加:-Command “./backupWin.ps1”
開始:c:\WorkSpace\GoogleDrive\backup\blog\

これで万全です。

不明点があればコメント貰ったらできる限り回答します。

コメント

タイトルとURLをコピーしました