LINUX.ORG.RU

Поделитесь скриптом

 


0

1

Есть каталог, в котором около 20 тыс файлов - почасовые бекапы проекта. Бекап делался не инкрементальный, а полный (так надо). 99% файлов - копии друг друга. Научите, как убрать все копии, оставив только уникальные файлы? Просто надо переехать, а оно весит под 500 ГБ. Тут уникальных файлов хорошо, если на гиг наберется.

★★

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

#!/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 ★★
()
Последнее исправление: ziemin (всего исправлений: 1)

После того, как всё уберёшь, познай мощь git (но про бэкапы на другом носителе забывать не стоит) и не устраивай помойку на компе.

peregrine ★★★★★
()
Ответ на: комментарий от sambist

А почему ты там столько бэкапов развёл? Держал бы 1 гит, который каждые n минут бы обновлял, а на носителе его скажем раз в m часов менял на текущую версию, удаляя старую.

peregrine ★★★★★
()

1. возьми только последний бэкап, остальные оставь на старом диске

2. для бэкапа делай снапшоты с хардлинками с помощью rsync --link-dest

anonymous
()

Научите, как убрать все копии, оставив только уникальные файлы?

1. составь список md5 — полное имя

2. man sort

3. корми выхлопом rm через xargs

emulek
()
Ответ на: комментарий от peregrine

Очень часто возникала нужда получить файлы сразу с 3-4-х версий, сравнить, что сломал и пр. Поэтому старую версию не удалял. Текущая версия лежит на дропбоксе, ежечасная без перезаписи - на соседнем харде и ежедневная перетираемая - на роутере.

sambist ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.