Dropboxに、VPSサーバをOS丸ごと全自動バックアップする

さくらのVPSサーバ構築手順

Dropbox使ってますか?
Dropboxを活用してVPSサーバを毎日丸ごと全自動バックアップする仕組みを作ってみましょう。

目指すは夢のOS丸ごと全自動バックアップシステム

私はかなり前からDropboxを愛用していまして、今や課金ユーザーとなっています。
おまけに Packrat という、Dropbox 内にあるファイルの変更履歴が無限に保存されるオプションも利用しており、うっかりファイルを上書きしても履歴をたどって任意の時点に戻すことが出来る安心感に、もはやDropboxの無いPCライフは考えられない状態となっております。

そんな便利なDropboxですが、実はLinux版も公開されているのをご存知でしょうか?

なんでも自由にインストールできるのがVPSサーバの醍醐味のひとつですので、ここはひとつDropboxをVPSサーバにインストールしてバックアップに活用してみましょう。

今回はこんな方針でいきたいと思います。

  • Mondo Rescue というバックアップツールを使う。
  • cronで毎日OS丸ごと全データをバックアップする。(DVDイメージファイルを生成)
  • バックアップデータはDropboxディレクトリに保存する
  • Dropboxによってデータが複製される。
  • Dropbox の Packrat のお蔭で過去のバックアップを無期限にたどれちゃう。

まさに夢のようなバックアップシステムですね。
もし不幸にもVPSサーバが吹き飛んだとしても、Dropbox内にOS丸ごとのイメージファイルがあるのですぐに復旧することができます。

では早速進めていきましょう!

Dropboxをインストールする

もしDropboxのアカウントを持っていないのであれば、まずはアカウントを作ってからお進みください。
私はサーバ毎にバックアップ用のアカウントを新規で作っています。クライアントさんにサーバを渡す時に、バックアップ用のDropboxアカウントも一緒に渡せるので便利なためです。

Dropbox
※このリンクから新規登録すると、標準の2GBに加えて+500MBおまけが付きます。よろしければどうぞ。

Dropboxをインストールする

公式サイトの手順に沿ってインストールしていきます。
Linux マシンに Dropbox をインストール

コンソールで作業をします。
まずはDropboxをダウンロード&解凍します。

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

Dropboxを起動してアカウントをリンクする

あらかじめパソコンのブラウザでDropboxを開いてログインしておくと、以降の作業がスムーズにすすみます。

インストールした Dropbox デーモンを実行します。

~/.dropbox-dist/dropboxd

デーモンが起動すると、アカウントをリンクさせるURLが表示されます。そのURLをコピーしてパソコンのブラウザで表示してDropboxアカウントとリンクさせます。

リンクが完了したら、Ctrl+Cを押して一旦Dropboxデーモンを止めます。

以下のようなディレクトリ構成でDropboxがインストールされます。

 root
  |
  |-Dropbox ← このディレクトリ内が同期されます
  |
  |-.dropbox-dist
      |
      |-dropboxd
      |-dropbox-lnx.XXXXXXXX
      |-VERSION

Dropbox管理用コマンドをインストールする

Dropboxの管理用コマンドをインストールします。

mkdir ~/bin
cd ~/bin
wget -O dropbox.py https://www.dropbox.com/download?dl=packages/dropbox.py
chmod a+x dropbox.py

他のサーバに迷惑が掛からないようLAN sync を停止しておきます。

dropbox.py start
dropbox.py lansync n
dropbox.py stop

Dropboxの起動スクリプトを作る

Webmin を使って起動用のスクリプトを追加します。

/etc/init.d ディレクトリに dropbox という新規ファイルを作り、以下のスクリプトを張り付けて保存してください。

/etc/init.d/dropbox

#!/bin/sh

# chkconfig: 345 99 01
# description: dropbox
# processname: dropbox

# コマンドをインストールしたpath
exec="/root/bin/dropbox.py"

# 実行ユーザー
user="root"

start() {
    echo -n $"Starting $prog: "
    su -c "${exec} start" ${user}
}

stop() {
    echo -n $"Stopping $prog: "
    su -c "${exec} stop" ${user}
}

status() {
    su -c "${exec} status" ${user}
}

restart() {
    stop
    start
}

case "$1" in
    start)
        $1
        ;;
    stop)
        $1
        ;;
    restart)
        $1
        ;;
    status)
        $1
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart}"
        exit 2
esac
exit $?

このスクリプトは、こちらのサイトに掲載されているスクリプトを使用させていただきました。有用なスクリプトをありがとうございます。
http://hajimenovic.hatenablog.jp/entry/2014/07/15/202922

スクリプトを保存したら、実行権限を与えてから実行します。

chmod +x /etc/init.d/dropbox
/etc/init.d/dropbox start

サーバ起動時に自動起動するようにしておきます。

chkconfig --add dropbox
chkconfig dropbox on

バックアップツールをインストールする

Mondo Rescue をインストールする。

Centos6(64bit)用のリポジトリファイルをダウンロードします。

cd /etc/yum.repos.d/
wget ftp://ftp.mondorescue.org/rhel/6/x86_64/mondorescue.repo

Mondo Rescue をインストールします。

yum install -y mondo

高速LZO圧縮ソフトもインストールします。

yum install -y lzop lzo

Dropbox ディレクトリ内にバックアップデータを置くディレクトリを作ります。

cd /root/Dropbox
mkdir VPS_backup

cronで毎日自動バックアップするよう設定する

Webmin で /etc/cron.d ディレクトリ内に、mondorescueという新規ファイルを作り以下のcronジョブを張り付けて保存します。

/etc/cron.d/mondorescue

PATH=/sbin:/bin:/usr/sbin:/usr/bin
0 3 * * * root mondoarchive -Oi -L -N -s 5000m -d /root/Dropbox/VPS_backup -E /root/Dropbox

以上で、毎日午前3時にOS丸ごとバックアップを行い、イメージファイル(DVD用)がDropboxディレクトリに保存されるようになりました。

翌朝、Dropboxディレクトリにバックアップファイルが保存されているのを確認してみてください。

お疲れ様でした!

 

  1. さくらのVPSでウェブサーバ、インストールマニュアル
  2. さくらVPSを申し込んで起動する
  3. パソコンにターミナルエミュレータをインストールする
  4. ユーザーを登録する
  5. ファイヤーウォールを設定する
  6. Webminをインストールする
  7. ApacheとPHPをインストールする
  8. MySQL、phpMyAdminをインストールする
  9. Apache + PHP を FPM/FastCGI で動かす
  10. ApacheをWorkerモードに切り替え&APCをインストールする
  11. 独自ドメインの取得&メールアドレスを設定する
  12. Apache の VirtualHost を編集する
  13. SSL証明書をインストールする(自分でやればこんなに激安!)
  14. SFTPでファイルを転送する
  15. DropboxでVPSサーバを丸ごと全自動バックアップする

 

コメント

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