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のスケジュールを設定しましょう。「タスクスケジュール」開き
「タスクの作成」クリック
「全般」に「最上位の特権で実行する」をチェックする。
「トリガー」の設定
「操作」の設定: プログラム:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加:-Command “./backupWin.ps1”
開始:c:\WorkSpace\GoogleDrive\backup\blog\
これで万全です。
不明点があればコメント貰ったらできる限り回答します。
コメント