■スクリプト概要 バックアップする際、元ファイルのタイムスタンプをファイル名に使用したい場合があった時に 便利なスクリプトです。特に複数ファイルまとめて処理しようとする場合に活躍するはず…。
#!/bin/sh ####################################################################### # << 機能概要 >> # バックアップしたファイル名に元ファイルのタイムスタンプを付与する # # <<変更履歴>> # Version 変更日 変更者 変更内容 # --------+-----------+-------------+---------------------------------- # 1.0 2011/xx/xx tanyao 対象ファイルリスト読込み ####################################################################### FILE_LIST=file_list.txt LOG_FILE=log_add_timestamp.log # リストファイル存在チェック if [ ! -f $FILE_LIST ]; then echo "ERORR: $FILE_LIST is not exist." exit 1 fi i=0 while read line do cp_target[$i]="$line" # コピー対象ファイル存在チェック if [ -f ${cp_target[$i]} ]; then timestamp=`ls -lrt --time-style='+%Y%m%d' ${cp_target[$i]} | awk '{print $6}'` cp -p ${cp_target[$i]} ${cp_target[$i]}.${timestamp} > /dev/null 2>&1 ls -l ${cp_target[$i]} ${cp_target[$i]}.${timestamp} >> ${LOG_FILE} else echo "ERORR: ${cp_target[$i]} is not exist." >> ${LOG_FILE} # continue fi i=`expr $i + 1` done < ${FILE_LIST} echo "" >> ${LOG_FILE} exit 0
■以下、補足説明
このシェルスクリプト(add_timestamp.sh)はコピー対象のファイルパスが記載されたfile_list.txtというファイルを同階層にご準備ください。
[root@tanyao ~]# cat file_list.txt /tmp/test01.txt /tmp/test02.txt /tmp/test03.txt /tmp/test04.txt
コピー対象ファイルのあるディレクトリの状況はこんな感じ。
[root@tanyao ~]# ll /tmp/test* -rw-r--r-- 1 root root 132 2月 2 2002 /tmp/test01.txt -rw-r--r-- 1 root root 132 6月 6 2006 /tmp/test02.txt -rw-r--r-- 1 root root 132 6月 6 2006 /tmp/test02.txt.20060606 -rw-r--r-- 1 root root 132 12月 21 15:29 /tmp/test04.txt※すでに複製後のファイルが存在していても上書きする仕様です。
スクリプトを実行すると同階層にログファイルが出力され、期待通り
タイムスタンプ名入りのコピーファイルが作成されたか確認できます。
[root@tanyao ~]# ./add_timestamp.sh [root@tanyao ~]# cat log_add_timestamp.log -rw-r--r-- 1 root root 132 2月 2 2002 /tmp/test01.txt -rw-r--r-- 1 root root 132 2月 2 2002 /tmp/test01.txt.20020202 -rw-r--r-- 1 root root 132 6月 6 2006 /tmp/test02.txt -rw-r--r-- 1 root root 132 6月 6 2006 /tmp/test02.txt.20060606 ERORR: /tmp/test03.txt is not exist. -rw-r--r-- 1 root root 132 12月 21 15:29 /tmp/test04.txt -rw-r--r-- 1 root root 132 12月 21 15:29 /tmp/test04.txt.20111221 [root@tanyao ~]#
ちなみに、ファイルのタイムスタンプを変更するには、
[root@tanyao ~]# touch -t 200202021751 /tmp/test01.txt
こちらの情報が何かのお役に立てましたら幸いです。
0 件のコメント:
コメントを投稿