さくらVPSのワードプレスの画像等のバックアップ先をエックスサーバーにする方法(rsyncでの同期)
さくらVPSを使っていますが、
このデータをどこかにバックアップしたい。
考えた結果、エックスサーバーが一番という結論に。
※データベースについてはプラグインを使って、メール送信等した方が楽。
この記事は画像などのバックアップ方法の紹介です。
なぜエックスサーバーなのか?
次が決め手。
- ・容量が200GBもあり、使い切れない(現在使用中)
- ・バックアップしてくれている
- ・SSHが鍵認証
ここに保存しておけば、ほぼ問題ないだろう。
ファイルサーバーとして使っても良いかもしれない。
バックアップの考え方
次のことがしたい。
- ・cronでrsyncを実行して同期
- ・同期対象は「wp-content」フォルダ
基本的に「upload」フォルダさえバックアップしておけば、ほぼ問題ない。
ただ、念のために「wp-content」全体をしておく。
では、やり方を説明する。
1、エックスサーバーにSSH接続できるようにしておく
エックスサーバーは初期状態ではSSHは使えません。
こちらの記事で設定方法を書いているので、この通りに設定ください。
自動ログインについては今回は使いませんが、設定しておくことを推奨。
エックスサーバーに自動でSSH接続する方法(Tera Termのマクロ)
2、エックスサーバーの秘密鍵をさくらVPSに保存する
エックスサーバーの秘密鍵を、さくらVPSに保存します。
場所は「/home/ユーザー名」のあたりでOK。
所有者はrootではなくユーザーにしておくと、実験がしやすい。
#所有者変更例
chown parudou:parudou himitu.key
#パーミッションも一応変更
chmod 600 himitu.key
「himitu.key」は自分が名前変更しています。
標準では「サーバーID.key」だと思います。
3、秘密鍵のパスフレーズを除外する
cronなのでパスフレーズの除外が必要です。
次のコマンドで除外できます。
ssh-keygen -p -f himitu.key
Enter old passphrase:(パスフレーズを入力)
Enter new passphrase (empty for no passphrase):(何も入力せずEnter)
Enter same passphrase again:(何も入力せずEnter)
Your identification has been saved with the new passphrase.
これにてパスフレーズ無しでログインできるようになりました。
4、エックスサーバーにバックアップ用フォルダ作成
SSHやFTPでログインした直下にバックアップ用のフォルダを作成します。
直下ならWEBからのアクセスは不可能なので安心安全。
今回は「bak」というフォルダを作ったことにします。
5、rsyncの実験(同期コマンドの実験)
cron登録前に、手動でやってみましょう。
次のコマンドを参考に、作ってください。
rsync -av -e "ssh -i /home/parudou/himitu.key -p 10022" /var/www/html/parudou3/wp-content/ name@name.xsrv.jp:bak/parudou3
#解説
#これはさくらVPSの秘密鍵の場所
/home/parudou/himitu.key
#さくらVPSの同期したいフォルダ
/var/www/html/parudou3/wp-content/
#エックスサーバー側
#ユーザー名@ホスト名:バックアップフォルダ
name@name.xsrv.jp:bak/parudou3
#ディレクトリは自動で作成してくれます。
画像が多い場合は時間がかかります。
同期なので、次回からは更新された分だけアップロードするので高速。
成功したら、次はcronに登録です。
6、cronに登録して自動化
ここはrootでのログイン状態でやります。
次のコマンドを入力
crontab -e
cronを一つも作っていない場合、まっさらな画面が表れます。
そこに次のようなcronを作成する。
00 03 * * * rsync -av -e "ssh -i /home/parudou/himitu.key -p 10022" /var/www/html/parudou3/wp-content/ name@name.xsrv.jp:bak/parudou3
最初の「00 03 * * *」はcronを実行する時間です。
この場合、「毎日AM3時00分に実行」となる。
自由に変更ください。
最初は試しに「*/3 * * * * 」として、3分毎に実行してみてください。
実行したタイミングでroot宛てにメールが届くはずです。
「/var/log/cron」にもログが残ります。
成功したら元の実行時間に戻し、メール送信を止めます。
次のコマンドを入力。
vi /etc/crontab
MAILTO=root
↓変更
MAILTO=""
こうするとcron実行時にメールが届きません。
もちろん、メールしてほしいのであれば残します。
以上です
これにてさくらVPSのファイルがエックスサーバーに毎日一度同期されます。
なおこの場合、さくらVPSで削除したファイルはエックスサーバーでは削除されません。
バックアップが目的なので、万一間違って削除した場合にも残るようにしたい。
削除して完全に同一の形に同期するにはrsyncに「–delete」のコマンドを追加してください。
※「rsync」「cron」についての詳細はググって確認願います。
いろいろ応用が利く技です。
やり方を変えれば、リアルタイム同期などもできます。
曜日ごとに同期場所を変更し、一週間分のバックアップを取るのも良い。