バックアップスクリプトを書く
/usr/local/bin/backupに以下のスクリプトを作成
#!/bin/sh USAGE=`cat <<EOF Usage backup [option] \n -v: Verbose mode. \n -d: Delete extraneous files from destination dirs. \n -h: Show this help. EOF` DEST_HOST=ホスト名(IPアドレスでもいい) DEST_USER=ユーザー名 DEST_DIR="/home/$DEST_USER/backup/" PING='/bin/ping' AWK='/usr/bin/awk' GREP='/bin/grep' # host check PACKET_LOSS=`$PING -c 1 $DEST_HOST | $GREP 'packets' | $AWK '{print $6}'` if [ "$PACKET_LOSS" != '0%' ];then exit fi RSYNC='/usr/bin/rsync' SSH='/usr/bin/ssh' SSH_KEY=SSHキーのパス。あらかじめssh-copy-idしておく必要あり EXCLUDE_LIST=`cat << EOF /user/.local/share/Trash /user/.mozilla/firefox/brl53l0e.development/Cache EOF` for EXCLUDE in $EXCLUDE_LIST; do EXCLUDES="$EXCLUDES --exclude='$EXCLUDE'" done GETOPT='/usr/bin/getopt' RSYNC_OPT='--timeout=60 -az' for OPT in `$GETOPT 'vhd' $*`;do case $OPT in '-h') echo $USAGE exit ;; '-v') RSYNC_OPT="${RSYNC_OPT}v" ;; '-d') DELETE_FLAG=1 ;; esac done if [ "1" = "$DELETE_FLAG" ];then RSYNC_OPT="$RSYNC_OPT --delete" fi TARGETS='/etc /home/user' for TARGET in $TARGETS;do $RSYNC $RSYNC_OPT $EXCLUDES -e "$SSH -i $SSH_KEY" $TARGET ${DEST_USER}@${DEST_HOST}:${DEST_DIR} done
除外するディレクトリEXCLUDE_LISTで指定できる。
たまにdオプションを渡して起動すると余計なファイルが掃除できる仕様。
これをシャットダウンの時に起動するようにする
$ sudo chmod 744 /usr/local/bin/backup $ sudo ln -s /usr/local/bin/backup /etc/init.d/ $ sudo update-rc.d backup stop 0 0 .