rsyncでバックアップ

towerの必要なデータをrsyncでミラーリングして、それをtar+gzipでまとめてPDやDVD-RAMにバックアップするという方針。 NFSでディスクをマウントすることも考えたが、UIDなどの問題もあるので、安易なSSHによるrsyncにした。 あと、tarよりはdumpを使う方が望ましいのはわかっているが、諸般の事情によりtar。 towerでsshの鍵を作って、公開鍵をミラーリングを置くposeidonに渡す。 そして非常に気分がよくないが、poseidonの/etc/sshd_configでPermitRootLoginをyesにしてやる。 あとは、バックアップ用スクリプトの作成。 まずはrsyncを行う、tower側で走らせるスクリプト。 複数回rsyncを動かすので、ssh-agentを使って認証を1回ですむようにして動かす。
#!/bin/sh
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh

BACKUP_HOST=poseidon
MIRROR_DIR=/root/mirror

eval `ssh-agent`
ssh-add
${RSYNC} -av --delete /etc ${BACKUP_HOST}:${MIRROR_DIR}/etc
${RSYNC} -av --delete /var/lib/mailman ${BACKUP_HOST}:${MIRROR_DIR}/mailman
${RSYNC} -av --delete /var/lib/mysql ${BACKUP_HOST}:${MIRROR_DIR}/mysql
${RSYNC} -av --delete /var/named/chroot/etc ${BACKUP_HOST}:${MIRROR_DIR}/named
${RSYNC} -av --delete /var/named/chroot/var ${BACKUP_HOST}:${MIRROR_DIR}/named
${RSYNC} -av --delete /var/www ${BACKUP_HOST}:${MIRROR_DIR}/www
${RSYNC} -av --delete /home ${BACKUP_HOST}:${MIRROR_DIR}/home
${RSYNC} -av --delete /home ${BACKUP_HOST}:${MIRROR_DIR}/home
homeを2回やっているのは、一回リストを取って転送している間に、新しいファイルが増えている可能性を考えて(というより、ほぼ新しいメールは届いている)。 そして、poseidonでは、これをまとめてディスクに記録できる大きさに分割するスクリプトを用意する。 とりあえず、PDを使うのでファイルは600Mに分割。まあ、外部メディアに記録できなくても最新のバックアップがposeidonのHDDにあると思うだけでも、気が楽だ。
#!/bin/sh
TAR=/bin/tar
SPLIT=/usr/bin/split
STORE_DIR=/mnt/fat32
MIRROR_DIR=/root/mirror

mktargzs ()
{
        echo "Backup $1"
        cd ${MIRROR_DIR}
        ${TAR} zcf - ./$1 | ${SPLIT} --byte=600m - ${STORE_DIR}/$1.tar.gz.
}


mktargz ()
{
        echo "Backup $1"
        cd ${MIRROR_DIR}
        ${TAR} zcf ${STORE_DIR}/$1.tar.gz ./$1
}

mktargzs home
mktargz etc
mktargz www
mktargz mailman
mktargz mysql
mktargz named

このブログ記事について

このページは、norが2008年3月 6日 11:00に書いたブログ記事です。

ひとつ前のブログ記事は「towerのバックアップのためにVineを入れる」です。

次のブログ記事は「アルバムジャケット画像の作り方」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

ウェブページ

Powered by Movable Type 6.8.5