お手軽バックアップスクリプト

手軽さを最優先にしたバックアップ作成スクリプト
.bashrc に書いておくことにする。

bkdir=~/bk
bk() {
	if [ -z "$1" ]; then
		echo "Usage: bk FILENAME [LOG]"
		exit 1;
	fi

	if [ ! -d $bkdir ]; then
		mkdir $bkdir
		if [ $? ]; then
			exit 2;
		fi
	fi

	fname=`basename $1`_`date +'%y%m%d%H%M'`
	/bin/cp -iv "$1" $bkdir/$fname
	if [ -n "$2" ]; then
	    echo `date +'%y-%m-%d %H:%M'`" : $2" >> $bkdir/`basename $1`.log
	fi 
}

kb() {
	if [ -z "$1" ]; then
		echo "Usage: kb BACKUP_FILENAME"
		exit 1;
	fi

	if [ -z "$2" ]; then
		fname=`basename "$1" | sed -e 's@_[0-9]*$@@'`
	else
		fname="$2"
	fi
	/bin/cp -iv "$1" "$fname"
}

使用例

[~:0]$ bk hoge.c 
hoge.c -> /home/ao/bk/hoge.c_0610262156
[~:0]$ kb ~/bk/hoge.c_0610262156 
overwrite hoge.c? (y/n [n]) n
not overwritten
[~:1]$ kb ~/bk/hoge.c_0610262156 renamed
/home/ao/bk/hoge.c_0610262156 -> renamed

[追記:2006-10-31]
ログを書けるようにした。
Windows でお手軽バックアップを行うにはこのソフトが便利:
須雲川
http://www.forest.impress.co.jp/lib/sys/file/syncbackup/sukumogawa.html


バックアップを削除するときは単に

find ~/bk -mtime +30 -delete

という感じで。
やってることはほとんど「Windows のゴミ箱相当スクリプト」と同じだな。
ところで他の人はどんなファイル削除の仕方をしているんだろう。私は単に

alias rm='gomi'
gomi () { 
    /bin/mv "$@" ~/.gomi
}

だけど。