#数年前のとある日の出来事
同僚がサーバのファイルが読めないっと飛びついてきた。
サーバ室に行き確認しましたが、読めませんでした。専用のRAIDコントローラーにつながっているんだが、RAIDコントローラーから外して単発のHDDとして繋いでも読めなかった。
RAIDコントローラーが壊れたんではないかという結論になった。
そうです。RAIDはRAIDコントローラーが死んでデータが破壊される可能性あります。
事例としては経験してませんが、OSが暴走してデータが壊れる可能性もあります。
#別のHDDにbackupしましょうね(^_^;
backup先としては外付けのUSB-HDDがおすすめです。
注意:USB-HDDが盗まれるとデータ漏洩しますので、自己責任でお願いします。
詳細は省略しますが、 市販の外付けHDDはたいていWindows用のNTFSかFATフォーマットになっていますので、/sbin/parted (GNU Parted)でLinux用のパーティションに変更して、フォーマットしてください。フォーマット形式はext4(/sbin/mkfs.ext4)とかxfsで(/sbin/mkfs.xfs)いいんでないかな。フォーマットしたら/etc/fstabに加筆してください。UUIDは/dev/disk/by-uuid/あたりを見たらわかります。
#backupのアプリ
rsyncがおすすめです(^_^;
ちな私は次のような自作ツールを使ってます。面倒なので説明は省略しますが、ソース読んでください。
バックアップ先の外付けHDDをマウントしたディレクトリは /backup/1, /backup/2とします。
crontab の設定。毎月1日に/backup/1にbackupして、15日に/backup/2にbackupします。
$crontab -l
15 5 1 * * /usr/local/sbin/BACKUP.pl /backup/1 < /usr/local/etc/backup-all.txt > /tmp/backup.all.log 2>&1
15 5 15 * * /usr/local/sbin/BACKUP.pl /backup/2 < /usr/local/etc/backup-all.txt > /tmp/backup.all.log 2>&1
バックアップ対象ファイルを設定。
/etc/
/home/
/var/
/usr/
/root/
/boot/
プログラム。
#!/usr/bin/perl
# By Ryuji MATSUMOTO
#
# rev 1.9 : debug = 1
# rev 2.0 : append exclude.
#$debug = 1;
if($#ARGV== -1)
{
die "usage $0 STORE_DIR\n";
}
$STORE=$ARGV[0];
die "No Such Directory \"${STORE}\"\n" unless(-d $STORE);
$RSYNC = "/usr/bin/rsync --delete -va";
$RSYNC .= " -n" if($debug);
while(<STDIN>)
{
chop;
($dir , @execlude) = split(/\s/, $_);
if(-d $dir)
{
unless(-d "${STORE}${dir}")
{
system("/bin/mkdir -p ${STORE}${dir}");
}
$dir =~ s#\/$##;
$dir .= "/";
local($r)=$RSYNC;
for $i ( 0 .. $#execlude)
{
local($t) = $execlude[$i];
if($t=~ /^\S+$/)
{
$r = $r . " --exclude=\"" . $t . "\"";
}
}
print("${r} ${dir} ${STORE}${dir}\n");
system("${r} ${dir} ${STORE}${dir}");
}
}
#EOF
以上です。