さくらVPSにDropboxをインストールしてバックアップする方法

WordPressだけバックアップするならBackWPUpを使えばいいのですが、うちのVPSサーバーにはWordpress以外にもMovable TypeやRailsや手打ちのホームページまである。。バックアップの仕方を一元化するためにDropboxをインストールして、rsyncとmysqldumpを使ってバックアップを取ることにします。




さくらVPSにDropboxをインストールする方法

まず最初にさくらVPSにDropboxをインストールするところから始めます。

自分のサーバーのOSが32ビットか64ビットか調べる。

uname -a

OSが32ビットの場合のDropboxのダウンロードとインストール方法

wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -

OSが64ビットの場合のDropboxのダウンロードとインストール方法

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

これでLinux用のDropboxがダウンロードされて.dropbox-distにインストールされます。

次にサーバーとDropboxをリンクします。

.dropbox-dist/dropboxd

このコンピュータは Dropbox アカウントにリンクされていません...
このデバイスをリンクするには、https://www.dropbox.com/cli_link_nonce?nonce=hogehogehogehoge にアクセスしてください。

リンクするためのURLが出てくるのでそれをコピーしてブラウザに貼り付けてそのURLへ移動します。メールアドレスとパスワードを入力してDropboxのアカウントにリンクさせます。リンクが完了すると下記のメッセージがサーバー側に表示されます。

このコンピュータは Dropbox にリンクされました。ようこそ、hoge hoge さん。

//Control + Dで終了する

この時点でDropboxというフォルダがサーバーに作られています。
Control + Dで終了してしまったのでDropboxの同期は止まっています。

Dropboxを簡単にコントロールするためにdropbox.pyをダウンロードしてきます。

wget http://linux.dropbox.com/packages/dropbox.py

chmod +x dropbox.py

./dropbox.py start
Dropbox isn't responding!
Dropbox is already running!

うーん、Dropboxは反応しないけどすでに動いている?
サーバーをリブートしてみた。

sudo reboot

./dropbox.py start
Starting Dropbox...Dropbox isn't running!
Done!

Dropboxがちゃんと動くようになった。同期もしてくれています。

ただしこのままだとブロードキャストが飛んでいって他の人達の迷惑になるのでDropboxのブロードキャストを止めます。

//Dropboxからブロードキャストが飛んでいる様子
sudo tcpdump -i any -s 1600 port 17500
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 1600 bytes
14:04:26.713564 IP hoge.com.17500 > 255.255.255.255.17500: UDP, length 103
14:04:26.715384 IP hoge.com.17500 > hogeIP.17500: UDP, length 103

//このUDPを飛ばさないようにする
dropbox.py lansync n

サーバーを再起動したときにDropboxが起動しないのでcrontabでサーバーが起動した時にDropboxを起動させるようにする。

crontab -e

@reboot $HOME/.dropbox-dist/dropboxd

これでさくらVPSへのDropboxのインストールは完了です。次にバックアップの設定をします。

mysqldumpを使ってデータベースのバックアップする方法

mysqldumpを使ってデータベースのバックアップします。

DropboxにServerフォルダを作りその中にdbフォルダを作ります。次にデータベースをdbフォルダに保存するシェルスクリプトを書きます。

vim backupDB.sh

#!/bin/sh
filename=`date +%y%m`
mysqldump --opt  -u mysql_username --password="database_password" database_name > /home/your_name/Dropbox/Server/db/$filename-database_name.sql

mysql_usernameとかdatabase_password等は自分に合わせて変更してください。

backupDB.shを実行してデータベースのバックアップをとってみます。

chmod +x backupDB.sh
./backupDB.sh

DropboxのServerフォルダのdbフォルダに1502-database_name.sqlというデータベースファイルが保存されます。

1502は2015年2月の略です。

データベースをリストアしたい場合は下記のようになります。

mysql -u root -p database_name < 1502-database_name.sql

このままだとバックアップをするのに./backupDB.shをわざわざ入力しないといけないので、crontabに登録して毎日自動でバックアップを取ってもらいます。

crontab -e

0 3 * * * /home/your_name/backupDB.sh

これで毎夜3時にデータベースのバックアップを取ってくれます。1ヶ月毎のデータベースを保存してもらって、同じ月の場合は上書き保存になります。

複数のデータベースがある場合は、backupDB.shに追加しましょう。
これでデータベースのバックアップは完璧です。

次にrsyncを使ってファイルをバックアップします。

rsyncを使ってファイルをバックアップする方法

データベースのバックアップは完璧になりましたが、画像やファイルなどのバックアップはできていません。これらに対してはrsyncを使ってバックアップをとります。

とりあえずrsyncをインストールします。

sudo apt-get install rsync

rsyncを試してみます。

rsync -av --delete denshikousaku Dropbox/Server/

このサイトのwordpressはdenshikousakuというフォルダ名になっています。そのフォルダまるごとDropboxに保存します。

backupFiles.shを作ってcrontabに登録して自動的にバックアップ(同期)が取れるようにします。

vim backupFiles.sh

#!/bin/sh
rsync -a --delete /home/your_name/wordpress /home/your_name/Dropbox/Server/

//backupFiles.shを保存して実行権限を加える
chmod +x backupFiles.sh

wordpressが複数ある場合、rsyncを追加してください。

最後にルートで実行できるようにsudoでcrontabに登録します。

sudo crontab -e

0 4 * * * /home/your_name/backupFiles.sh

これで毎朝4時にファイルをバックアップ(同期)してくれます。

なおバックアップ(同期)したくないフォルダ(例えばログ等)がある場合は–exclude-fromを使います。

まず無視リストを作ります。

vim rsync-exclude.txt

/rails/log/*

無視するフォルダやファイルはrsync-exclude.txtから見て相対パスになります。

backupFiles.shに–exclude-fromを追加します。

vim backupFiles.sh

rsync -a --delete --exclude-from=/home/your_name/rsync-exclude.txt /home/your_name/rails /home/your_name/Dropbox/Server/

これでrsync-exclude.txtに記載したファイルやフォルダを無視してバックアップしてくれるようになります。

以上、さくらVPSにDropboxをインストールしてバックアップする方法でした。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください