Feed


メモ‎ > ‎

rsyncでフルバックアップ

#!/bin/sh

#root権限を得る
if [ "`whoami`" != "root" ]; then
exec sudo -k "$0"
fi

#エラー終了 引数:エラーメッセージ
errorexit() {
read -p "$1" dummy
exit 2
}

#バックアップ先パーティションのUUID
PART_UUID="6059349b-9140-4272-9b84-e8052d72443c"
#バックアップ先パーティションのマウントポイント
MOUNTPOINT=/media/backup

EXCLUDE_LIST=/home/superbacker/exclude-list

TIME=`date +%Y-%m-%d-%H-%M-%S`
#今回のバックアップ先フォルダ
DEST="$MOUNTPOINT/$TIME"
#最後のバックアップへのリンク
LATEST_LINK="$MOUNTPOINT/latest"

mkdir $MOUNTPOINT
mount UUID="$PART_UUID" "$MOUNTPOINT" || errorexit "mount 失敗"

if [ -e "$LATEST_LINK" ]; then
LINK_DEST_OPT="--link-dest $LATEST_LINK"
fi

rsync -aHAXS --exclude-from="$EXCLUDE_LIST" $LINK_DEST_OPT  / "$DEST"

#ln -fだとリンクが上書きされない
rm -f "$LATEST_LINK"
ln -sf "$DEST" "$LATEST_LINK"

echo "バックアップ完了"

umount "$MOUNTPOINT" || errorexit "umount 失敗"
rmdir "$MOUNTPOINT"

#ディスクを切断
echo -n 1 > /sys/block/`echo \`blkid -U "$PART_UUID"\` | cut -c 6-8`/device/delete || errorexit "ディスクの切断に失敗"
read -p "press enter" dummy

exclude-list

/dev/**
/sys/**
/proc/**
/mnt/**
/media/**
/tmp/**
/var/tmp/**
/home/superbacker/.gvfs
/run/**
/var/cache/**