ファイルのスナップショットを作成する

#!/bin/sh
#snapshot.sh [-d 作成先ディレクトリ] [-e] ファイル名 [ファイル名...]
#-e は過去のスナップショットを削除する

dir="."
daytime=`date +%y%m%d_%H%M%S`
while [ -n "$1" ]; do
    case $1 in
        -d) dir=$2
            shift 2
            ;;
        -e) erase=1
            shift
            ;;
        *)
            basename=`echo "$1" | sed 's/.*\///'`
            cp -a $1 $dir/$basename-snapshot-$daytime
            #スナップショットの作成に成功した場合のみ過去のスナップショットを削除
            if [ "$?" = "0" -a "$erase" = 1 ]; then
                rm -rf $dir/$basename.snapshot-*
            fi
            mv $dir/$basename-snapshot-$daytime $dir/$basename.snapshot-$daytime
            shift
            ;;
    esac
done
$ ./snapshot.sh a

$ ls
a.snapshot-100215_132242