configファイルを変更するときには
# cp -p httpd.conf httpd.conf.070628
こんな感じで、「ファイル名+日付」等でバックアップを取りますよね*1。
けどこれが意外とめんどくさい。
- 今日何日だっけ?
- あ、既に今日の日付でバックアップ取ってるな。後ろに数字付け足すか
みたいなこと考えないといけないし。あと、古いSolarisでtab補完効かなかったりすると余計にめんどい。(shellの設定が悪いだけかもしんないけど)
おまけに、形式が決まってない*2ので、人によってファイル名がすげーバラバラだったり。
ということでサクっと関数を作ろう。
function bk (){ if [ $# -ne 1 ]; then echo "bk: missing file operand" return 1 fi FILENAME=$1 CNT=02 BACKUP=$FILENAME.`date +%Y%m%d` if [ ! -f $BACKUP ]; then cp -p -R $FILENAME $BACKUP return 0 else while [ : ]; do if [ -f $BACKUP$CNT ]; then CNT=`expr $CNT + 1` if [ $CNT -lt 10 ]; then CNT=0$CNT fi continue fi cp -p -R $FILENAME $BACKUP$CNT return 0 done fi }
こんなので良いかなー。if文まわりにセンスがないのは勘弁してください><
$ bk httpd.conf $ ls httpd.conf httpd.conf.20070628 $ bk httpd.conf $ ls httpd.conf httpd.conf.20070628 httpd.conf.2007062802
後はこれを/etc/bashrcあたりに忍ばせる :-)
※ 追記
backupって名前も無駄に長いな。bkに変えよう。
- s/backup/bk/g
*1:subversion使えって言う話もあるけど、それはまた別のお話
*2:個人的にはタイプ数が一番少ない1番が好み