rsyncサーバーを立ち上げて、VPS側のデータを、自宅PC側のLinuxサーバーに、cronで自動バックアップする方法。

 

要するに、説明するのが面倒なので、下記をご覧下さい。

http://tinyurl.com/o6bsw2h

(ここに全ての解説が詳しく書いてあります。)

つまりは、VPS側で、まず、サーバーのバックアップデータを作ります。("hogehoge.tar.gz"などでサーバーのデータ全体をまとめたり、"mysqlの全体のdump"などを取りまして、できるだけ毎日保存します。)

ここまでは普通のVPS側のバックアップですが、ここからが新しめです

VPS側で、rsyncサーバーをデーモンで立ち上げて、自宅側のPCのLinuxサーバーでは、cronにrsyncを書き込んで、時間になったら同期して自動バックアップする方法が、私のオススメの方法です。

そうすれば、自宅側のPCのLinuxサーバーは24時間点けっぱなしで良ければ、それが自動バックアップサーバーになりますよ。

私のサーバーのデーターは、全部まとめると、優にDropboxの方にデーターをバックアップする方法では足りない位のデータ量なので、そういう人向けの助けになればと思います。

私は、毎日バックアップをVPS側で取って、毎朝、家に置いてあるLinuxサーバーに自動バックアップしてます。

ファーストサーバーの教訓を忘れてはなりませんよね?

私のrsyncサーバー、自宅側のバックアップサーバーは順調に動いてますよ。お試しあれ!(^ω^)

 

 

 

 

 

—– まぁ、前置きが長くなりましたが、やってみましょうね。—–


 

【VPS側】

# apt-get install xinetd
# vi /etc/xinetd.d/rsync

service rsync
{
     disable = no
     socket_type = stream
     wait = no
     user = root
     server = /usr/bin/rsync
     server_args = –daemon
     log_on_failure += USERID
}


# vi /etc/rsyncd.conf


### グローバル・オプション
uid = root
gid = root
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow   = xxx.xxx.xxx.xxx
hosts deny    = *
### モジュール・オプション
[backup]
comment = rsyncd server
path = /home/userdir/backup
read only = no
auth users = user
secrets file = /etc/rsyncd.secrets

"hosts allow"には、自宅のPC側のIPアドレスを書き、"hosts deny"では"*"を書けば、同期時のセキュリティが高くなる。
"path"では、バックアップ元のファイルへのPATHを書き込みます。
"auth users"で指定した、"user"を、下記の/etc/rsyncd.secretsの"user"と一緒にする。ここで指定する、"user"は、/home/userdirの部分のuserdirの事ではなく、好きな名前を指定することが出来ます。


# vi /etc/rsyncd.secrets


     user:password

パスワードを指定し、メモっておきます。
 
# chmod 600 /etc/rsyncd.secrets

# chown root. /etc/rsyncd.secrets

/etc/rsyncd.secretsは、実行するユーザーを指定し(VPS側のrsyncd.confで指定したuid,gid)、更にパーミッションを600にしないと実行できません。

# vi /etc/services


226行目辺り、「rsync」を検索する。

rsync           873/tcp
rsync           873/udp

port番号が873が初期値ですが、それを好きなport番号に変えてもいい。
指定したport番号をiptablesなどで、空けてください。





# /etc/init.d/xinetd restart


 
【自宅のPC側】

# vi /etc/rsync.passwd

password


VPS側の、/etc/rsyncd.secretsで指定したpasswordのみを、自宅のPC側の/etc/rsync.passwdに書き記す。

# chmod 600 /etc/rsync.passwd

# chown root. /etc/rsync.passwd

/etc/rsync.passwdは、実行するユーザーを指定し(VPS側のrsyncd.confで指定したuid,gid)、更にパーミッションを600にしないと実行できません。

こんなの作って見ました。見る人は、余計にこんがらがるだろうか? 成功すると、自動でVPS側の指定データを、自宅PC側のバックアップサーバーと同期されます。

 

そして、ROOTにメールで、同期されたデータを通知します。

# vi /root/backup-server.sh

#!/bin/sh

##########################################################

# 設定【BACK_UP_PATHには末端の"/"が必須です。】

# BACK_UP_PATHはバックアップ先のPATHを指定します。
BACK_UP_PATH=/media/HDD/

# BACK_UP_LISTは、指定のファイル名を、BACK_UP_PATHのフォルダに書き記します。内容は、同期のファイル名が記されたデータです。
BACK_UP_LIST=BACKUP_SERVER_LIST.TXT

PASSWORD_FILE=/etc/rsync.passwd

# RSYNC_USER_NAMEは、VPS側の/etc/rsyncd.confのauth usersで指定したuserを書きます。
RSYNC_USER_NAME=user

# RSYNC_SERVER_IP_ADDRESSは、VPS側のIPアドレスを書きます。
RSYNC_SERVER_IP_ADDRESS=xxx.xxx.xxx.xxx

# RSYNC_SERVER_MODULEは、VPS側の/etc/rsyncd.confの[]でくくったモジュール名を書きます。
RSYNC_SERVER_MODULE=backup

# RSYNC_PORTは、デフォルトでは、VPS側のportが873ですが、変更しているのであったらそれに変えます。
RSYNC_PORT=873

# POSTFIX,DOVECOTを自宅側のPCにインストールし、動かしていると、ROOT宛に下記のメッセージを添えて、同期されたデータのメールが送信されます。
ROOT_MAIL_MESSAGE="VPSのこれらのデータが、バックアップサーバーに、自動バックアップされました。"

##########################################################

# 下記を一行で書きます。
/usr/bin/rsync -av –port=$RSYNC_PORT –password-file=$PASSWORD_FILE rsync://$RSYNC_USER_NAME@$RSYNC_SERVER_IP_ADDRESS/$RSYNC_SERVER_MODULE $BACK_UP_PATH > $BACK_UP_PATH$BACK_UP_LIST

cat $BACK_UP_PATH$BACK_UP_LIST | mail -s $ROOT_MAIL_MESSAGE root

# chmod +x /root/backup-server.sh

# vi /etc/crontab

00 5    * * *   root    /root/backup-server.sh

毎朝5:00にbackup-server.shが実行される。

 


(お まけヒント1)家でWindows等を併用している方は、家に置いてあるLinuxサーバーの自動バックアップする先のPATHをsambaで共有させて おくといいでしょう。Windowsから、毎日しっかりと自動バックアップが出来ているかどうか、確認しながら、生活が出来ますよ!(^ω^)

 

(おまけヒント2)家に置いてあるLinuxサーバーは、24時間点けっぱなしですから、radiotrayなどをインストールし、シャウトキャストラジオを24時間流しっぱなしでも良いかもしれませんね!(゚∀゚)

(お まけヒント3)家に置いてあるLinuxサーバーを24時間点けっぱなしなら、VPSも丸ごと自宅サーバーで運用した方がいいと思うかも知れませんね。私 は、VPSは24時間365日運営でいいですが、家のLinuxサーバーは何時電源を消しても、誰からも文句言われないので、気楽でいいと思います。