[bash]
#!/bin/sh
#set -x
basedirectory= »/media/CANON_DC/DCIM/ »
sshinfo= »xxx@yyy.com »
serverdir= »/home/xxx/photos/ »
processfile ()
{
  extension=`echo « ${2} » | awk -F . ‘{ print $NF }’  | tr ‘[:upper:]’ ‘[:lower:]’`
  if [ « ${extension} » = « jpg » -o « ${extension} » = « jpeg » ] ; then
    localcksum=`cksum « ${1}${2} » | awk ‘{ print $1  »  » $2 }’`
    serverfilename=`echo « ${localcksum} » | awk ‘{ print $1 }’`
    serverfilename= »${serverfilename}.${extension} »
    echo « ${serverallcksum} » | grep « ${localcksum} ${serverdir}${serverfilename} » > /dev/null
    if [ « ${?} » = « 1 » ] ; then
      scp -p « ${1}${2} » « ${sshinfo} »: »${serverdir}${serverfilename} »
      stat=`stat -c %y « ${1}${2} »`
      ssh « ${sshinfo} » touch -d « ${stat} » « ${serverdir}${serverfilename} »
    fi
  else
    echo « skiping ${2} because of extension: ${extension} »
  fi
}
scandir()
{
  echo « scan ${1} »
  for myfile in `ls ${1}`
  do
    if [ « ${1} » = « . » -o « ${1} » = « .. » ] ; then
      echo « skip ${1} »
    elif [ -d « ${1}${myfile}/ » ] ; then
      scandir « ${1}${myfile}/ »
    else
      processfile « ${1} » « ${myfile} »
    fi
  done
}
serverallcksum=`ssh « ${sshinfo} » cksum « ${serverdir}* »`
scandir « ${basedirectory} »
[/bash]