カメラからの転送スクリプト++
現在使っているカメラからのファイル転送*1スクリプト。
以前作ったスクリプトでは同じメーカのカメラを2台以上使った場合もしくはファイルの連番を初期化した場合にファイル名が重複する可能性があった。そこで、md5sum を使ってファイル名をユニークするやうに変更した。
概ねやってることは以下のようなこと(細かい部分は省略)。
- /media 以下にマウントされた中から DCIM を含むディレクトリを探す
- wのフラグがあがっているファイルをコピー
- コピーする際に、ファイル名にmd5sumで計算したファイルのチェックサムの1/4(32bit分)をファイル名に追加する。
- コピーしたらwのフラグを降ろす*1
- コピーしたファイルの拡張子が大文字なら、小文字に変換*2
- アンマウントする
東京通信工業の 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