parudou
parudou
parudou
更新日:2018/10/29

さくらVPSのワードプレスの画像等のバックアップ先をエックスサーバーにする方法(rsyncでの同期)

さくらVPSを使っていますが、
このデータをどこかにバックアップしたい。
考えた結果、エックスサーバーが一番という結論に。

※データベースについてはプラグインを使って、メール送信した方が楽。
この記事は画像などのバックアップ方法の紹介です。

なぜエックスサーバーなのか?

次が決め手。

ここに保存しておけば、ほぼ問題ないだろう。
ファイルサーバーとして使っても良いかもしれない。

バックアップの考え方

次のことがしたい。

基本的に「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」は自分が名前変更しています。
標準では「name.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」についての詳細はググって確認願います。

いろいろ応用が利く技です。
やり方を変えれば、リアルタイム同期などもできます。

是非ご感想・ご指摘等をください。

プロフィール

管理人:parudou
単なるWEBサイト作成マニアです。
底辺法人アフィリエイター。
Twitterはこちら

日記はパルどうSEOブログ

Copyright (c) parudou All Rights Reserved.