1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSAdvent Calendar 2017

Day 14

CentOS関係ないですが、backupしましょうね。RAIDは壊れる。

Last updated at Posted at 2017-12-14

#数年前のとある日の出来事

同僚がサーバのファイルが読めないっと飛びついてきた。

サーバ室に行き確認しましたが、読めませんでした。専用の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

バックアップ対象ファイルを設定。

/usr/local/etc/backup-all.txt
/etc/
/home/
/var/
/usr/
/root/
/boot/

プログラム。

/usr/local/sbin/BACKUP.pl
#!/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

以上です。

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?