バックアップをとろう(その1)
これまでは、バックアップをとるのに、いちいち手作業でマウントしてコピーするのを繰りかえしてきたのだが、さすがに面倒くさくなってきたので、自動でバックアップするコトにした。
まず仕様としては、
1.コピー元
/dev/eltroというボリュームグループに、それぞれgentoo、homeというパーティションが切ってある。他に、/dev/md0上に/bootがあるので、それもコピー対象にしたい。gentooとhomeは、nilfs2なので、nilfs2のスナップショット機能を使って、オンラインバックアップを取ることにする。
2.コピー先
それを、同じPC上にある別のHDDに切ってある/dev/wearhouseというボリュームグループの同名のパーティションにそれぞれコピーする。
ざっくりとこれだけのことを決めて、サッと書いたのが以下のスクリプトだよん。
とりあえず動く。
#!/bin/sh # source computer name SOURCE_DOMAIN="eltro" for TARGET in boot gentoo home do # setup source of files echo "[ ${TARGET} ]" if test ${TARGET} = "boot" then # we simply mount the boot SOURCE="/boot" /bin/mount /boot else DEVICE="/dev/${SOURCE_DOMAIN}/${TARGET}" #create the newest snapshot CP_NUM=`lscp -r -n 1 ${DEVICE} | \ awk 'NR == 2 {print $1}'` /usr/bin/chcp ss ${DEVICE} ${CP_NUM} # mount the snapshot on SOURCE SOURCE="/root/source" /bin/mount -v -t nilfs2 -o ro,cp=${CP_NUM} ${DEVICE} ${SOURCE} fi /bin/mount -v /dev/wearhouse/${TARGET} /root/backup # copy files /usr/bin/rsync --delete -av ${SOURCE}/ /root/backup #df -hT # for debugging # close the source of files /bin/umount -v ${SOURCE} /bin/umount -v /root/backup done
ちなみに、当初はネットワーク上にある別のPCのHDDにコピーするつもりだったのだが、1時間に一回の割合でバックアップを取ることにしたので、HDDを物理的に同じPCに持ってきてしまった。1時間に一回、別のPCを立ちあげる、とかは面倒くさくてやってられないから。