バックアップコマンドについてのメモ

√になっているときに良く使う。viのオプションを活用すべきという気もするけど(汗
ピリオドでない接頭辞(_BK)をつけるのは、前のバージョンがどういうものか、「lsコマンドのレベルで」(笑い)意識していたいから。
rsyncなどでは、この接頭辞でexcludeするようにしている。

#!/bin/bash

filepathname=$1
dn=`dirname $filepathname`
bn=`basename $filepathname`
YMD=`stat -c %y $filepathname | awk '{print $1}' | awk -F- '{print ($1 % 10) $2 $3}'`

for i in $(seq 1 9)
do
  if [ "$dn" = "" ]
  then
    target="_BK-${YMD}-${i}_${bn}"
  else
    target="$dn/_BK-${YMD}-${i}_${bn}"
  fi
  if [ ! -f $target ]
  then
    cp $filepathname $target
    break
  fi
done

あ、ここに貼り付けようとして、編集してたら、コードのバグ見つけた(笑
直さないとな(汗

ところで、いつも気持ち悪いのは、bashでは文字列が等しいかチェックする演算子が'='でも'=='でも動作すること。bashのmanでは

string1 == string2
True if the strings are equal. = may be used in place of == for
strict POSIX compliance.

ということになっている。へーそーですか、'='はPOSIX準拠なんですか。
ちなみにtestコマンド([]ともいう)のmanでは、'='しか出てこない。(CentOS5の話)