↓この処理をシェルスクリプトにした。 yajamon.hatenablog.com
#!/bin/bash src=$1 dest=$2 backup=$3 # backupのパスがファイルなら終了 if [ -f $backup ] ; then echo "\$backup is file" exit 1 fi # srcと同じディレクトリ構造のbackupディレクトリを作る if [ ! -e $backup ] ; then echo "make directory: $backup" mkdir $backup echo "create: "$(cd $backup; pwd) fi # 続行するか念のために確認 echo " src: $src" echo " dest: $dest" echo "backup: $backup" while [ "$goSign" = "" ] do echo "execute ok? (yes/no)" read goSign done if [ $goSign != "yes" ] ; then echo "abort" exit 1 fi cp -rv $src/* $backup/ echo "clean to $backup" find $backup -type f -exec rm -v {} \; # src内のファイルパスをもとに、destからbackupへコピーする for item in $(find ${src} -type f | sed -e "s/^${src}//g") do cp -v $dest$item $backup$item done