LINUX.ORG.RU

История изменений

Исправление ziemin, (текущая версия) :

Т.к. бекапы идут последовательно по времени можно замутить как-то так (не проверял):

#!/bin/bash
SRCPATH=/BACKUPS
DSTPATH=/mnt/Volume

cd "$SRCPATH"
oldmd5=""
#ls отсортирует по времени создания
for file in `ls -c`
do
  #получаем хэш 
  md5=`md5sum "$file" | cut -d' ' -f1`
  #для первого файла ничего не делаем
  if [ -n "$oldmd5" ] 
  then
    #для остальных сравниваем хэши
    if [ "$oldmd5" != "$md5" ]
    then
      echo "Copy $file"
      cp "$file" "$DSTPATH/$file"
    else
      echo "Duplicate $file"
    fi
  fi
  #сохраняем старый хэш
  oldmd5="$md5$
done

По идее последовательные копии исчезнут.

UPD: кстати можно немножко переделать (убрать из одной ветки cp и добавить в альтернативную rm) и почистить исходный каталог. А потом его копировать.

Исходная версия ziemin, :

Т.к. бекапы идут последовательно по времени можно запутить как-то так (не проверял):

#!/bin/bash
SRCPATH=/BACKUPS
DSTPATH=/mnt/Volume

cd "$SRCPATH"
oldmd5=""
#ls отсортирует по времени создания
for file in `ls -c`
do
  #получаем хэш 
  md5=`md5sum "$file" | cut -d' ' -f1`
  #для первого файла ничего не делаем
  if [ -n "$oldmd5" ] 
  then
    #для остальных сравниваем хэши
    if [ "$oldmd5" != "$md5" ]
    then
      echo "Copy $file"
      cp "$file" "$DSTPATH/$file"
    else
      echo "Duplicate $file"
    fi
  fi
  #сохраняем старый хэш
  oldmd5="$md5$
done

По идее последовательные копии исчезнут.