« ソーシャルアプリ専用ホスティングサービスをまとめてみました | Main | オープンソースソフトウェアのからくりとしくみ »

May 31, 2010

USBメモリにバックアップデータを格納する方法

過去にHDD障害によるデータ消失を何度も経験しているため、バックアップには多少神経質になっているところがあります。かといって面倒くさいのはもっと嫌。そこで考えたのは、Linuxが動いているマシンにUSBメモリを突っ込んでそこにバックアップデータを流し込む方法です。こうしておけばいざHDDが壊れてもUSBメモリだけ引っこ抜き他のマシンにマウントするだけですぐにデータを移行できるので楽ちんです。

今回はそんなテーマで記してみます。(root権限でお試しください)

【USBメモリをマウントする方法】
まずはUSBメモリをマウントさせなければなりません。USBメモリをマシンに突っ込み、「# dmesg」とすると、「sdb1」のような感じのものが出てくると思います。これを覚えておき

# mkdir /mnt/extdisk
# mount -t vfat /dev/sdb1 /mnt/extdisk

とするとUSBメモリが見えるようになります。(# ls /mnt/extdisk等)

ただし一時的にマウントしただけだとリブートしたら消えてしまいますので/etc/fstabに下記を追加します。

/dev/sdb1 /mnt/extdisk vfat defaults 0 0

これでUSBメモリの準備はOKです。


【バックアップ用のスクリプトを作る】
次にバックアップ用のスクリプトを作ります。今回は/var/www/html配下のファイルとMySQL上にあるデータベースをバックアップ対象とします。

下記のスクリプトを仮に/root/bin/backup.shという名前で保存したとします。

#!/bin/sh

#-------------------
# backup script
#-------------------

TARGET_DIR=/var/www/html

SAVE_NAME=www_backup`date +%Y%m%d_%H%M`
BACKUP_DIR=/mnt/extdisk
SAVE_DIR=$BACKUP_DIR/$SAVE_NAME

TMP_DIR=/tmp
TMP_SAVE_DIR=$TMP_DIR/$SAVE_NAME

mkdir $TMP_SAVE_DIR

# sources
cp -r $TARGET_DIR $TMP_SAVE_DIR

# database
/usr/bin/mysqldump -R --skip-lock-tables -uUSERNAME -p'PASSWORD' DATABASE_NAME > $TMP_SAVE_DIR/dbdump.sql

# compress
cd $TMP_DIR
tar -cf $SAVE_NAME.tar $SAVE_NAME

rm -rf $TMP_SAVE_DIR

gzip $SAVE_NAME.tar

mv $SAVE_NAME.tar.gz $SAVE_DIR.tar.gz

そして「# crontab -e」でcrontabに登録します。

0 2 * * * /root/bin/backup.sh 1 > /dev/null

この例では毎晩2:00にバッチが回るようになります。


【最後に】
USBメモリの値段が劇的に下がっている現在、皆なんでこの方法でバックアップを取らないのだろうと思うくらい非常に手軽です。ぜひ皆さんもお試しください。


※追記(2010/6/20)
古いバックアップデータを自動削除するようにしたいというリクエストをいただきました。これは以下のような記述を追加すれば実現可能です。

find /mnt/extdisk -maxdepth 1 -type f *.tar.gz -atime +6 -exec rm -f {} \;

|

« ソーシャルアプリ専用ホスティングサービスをまとめてみました | Main | オープンソースソフトウェアのからくりとしくみ »

サーバ・OS」カテゴリの記事

Comments

USBメモリに毎晩書き込んでしまうとBadBlockがスグに出来てしまいそうです…。

SLCのUSBメモリがあるとイイですよね。。。

Posted by: 自社鯖管理人 | June 08, 2010 at 02:23 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/48508005

Listed below are links to weblogs that reference USBメモリにバックアップデータを格納する方法 :

« ソーシャルアプリ専用ホスティングサービスをまとめてみました | Main | オープンソースソフトウェアのからくりとしくみ »