カメラからの転送スクリプト++

現在使っているカメラからのファイル転送*1スクリプト

以前作ったスクリプトでは同じメーカのカメラを2台以上使った場合もしくはファイルの連番を初期化した場合にファイル名が重複する可能性があった。そこで、md5sum を使ってファイル名をユニークするやうに変更した。
概ねやってることは以下のようなこと(細かい部分は省略)。

  1. /media 以下にマウントされた中から DCIM を含むディレクトリを探す
  2. wのフラグがあがっているファイルをコピー
  3. コピーする際に、ファイル名にmd5sumで計算したファイルのチェックサムの1/4(32bit分)をファイル名に追加する。
  4. コピーしたらwのフラグを降ろす*1
  5. コピーしたファイルの拡張子が大文字なら、小文字に変換*2
  6. アンマウントする

東京通信工業の DSC-U20 は 8MbyteのAiboロゴMSを使っているので、ファイルシステムの一番上に``move.me''なるファイル(サイズは0byte)を置いてある。このファイルが存在する場合はコピーではなくファイルを移動する。

#! /bin/sh

c2d() {
	for f in `find ${SRC} -type f -perm 0700 | grep -iv CTG`
	do

		fn=`echo ${f} | awk -F/ '{print $NF}' | tr "[A-Z]" "[a-z]"`
		PFX=`md5sum ${f} | awk '{print $1}'`
		PFX=`expr $PFX : '.*\(........\)$'`
		f1=`echo ${fn} | awk -F\. '{print $1}'`
		f2=`echo ${fn} | awk -F\. '{print $2}'`
		fn="${f1}-${PFX}.${f2}"
		PFX=""
		if [ -e ${DSK}/move.me ]
		then
			echo     ${f} ${DST}/${PFX}${fn}
			mv       ${f} ${DST}/${PFX}${fn}
		else
			cp -auvp ${f} ${DST}/${PFX}${fn} && chmod -w ${f}
			chmod 644     ${DST}/${PFX}${fn}
		fi
		find ${DST} -mtime +365 -exec /usr/bin/touch {} \;
	done
}


DST=${HOME}/Dropbox/Photos
if [ "x$1" != "x" ]
then
	DST=${DST}/$1
fi
cd ${DST} || exit

SRC=`find /media -name DCIM`
if [ "x${SRC}" != "x" ]
then
	DSK=`echo ${SRC} | awk -F/ '{printf("/%s/%s",$2,$3)}'`
	c2d

	# for SONY DSC-U20 (東京通信工業のカメラの動画対応)
	SRC=${DSK}/MSSONY
	if [ -e ${SRC} ]
	then
		c2d
	fi

	df -h       ${DSK}
	sudo umount ${DSK}
fi

exit 0

*1:ReadOnlyのファイルは転送済みとみなす

*2:GNU/Linux で Photozouへ転送するときに便利なやうに