適当な思いつきで書くブログ

UbuntuやPerlやJavaScriptやVimやZshやShellScriptやMySQLと戯れている中で適当な思いつきでやってみたことを書いています。

バックアップ用のコマンド

バックアップ用のファイルを作成するときに

$ cp hoge.pl hoge.pl.20110222

のように.bakYYYYMMDDのフォーマットでcpしていましたが、ちょっと面倒なのでコマンドを作りました。

function bak {
    for target in ${*}
    do
      opt="-i"
      if test -d ${target}
      then
        opt="${opt}a"
        target=`echo ${target} | sed -e "s|/$||"`
      fi
      backup="${target}.bak`date '+%Y%m%d'`"
      cp ${opt} ${target} ${backup}
      echo "make backup : ${backup}"
    done
}


これを.zshrcに書いておくと下記のような感じで使えます。

$ ls
Hoge/  Fuga/  hoge.pl  fuga.pl
$ bak *
make back up file : Hoge.bak20110222
make back up file : Fuga.bak20110222
make back up file : hoge.pl.bak20110222
make back up file : fuga.pl.bak20110222
$ ls
Hoge.bak20110222/  Fuga.bak20110222/  hoge.pl.bak20110222  fuga.pl.bak20110222  Hoge/  Fuga/  hoge.pl  fuga.pl


もちろん、ファイル単体でもOKです。

$ ls
hoge.pl
$ bak hoge.pl 
make back up file : hoge.pl.bak20110222
$ ls
hoge.pl.bak20110222  hoge.pl


バックアップを作りすぎて管理できなくなってしまっては本末転倒なので、バックアップはほどほどに...