История изменений
Исправление 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
По идее последовательные копии исчезнут.