Удалить старые резервные копии с помощью скрипта bash - PullRequest
0 голосов
/ 24 августа 2018

Я новичок в сценариях bash и пытаюсь написать сценарий, который удаляет файлы резервных копий на сервере старше x дней. На данный момент я установил номер 7, но это, вероятно, изменится. Сценарий в конечном итоге будет выполнен с помощью crontab. Он должен соответствовать следующим требованиям.

  • Удалить файлы старше x количество дней
  • Однако всегда должно быть не менее 3 файлов резервных копий. Поэтому, если резервных копий меньше 4, скрипт не должен их удалять.

Я попытался решить выше с кодом ниже

#!/bin/bash
unset all_backups_count
unset old_backups_count 
unset increment_old_backups_count
all_backups_count="$(find -type f | wc -l)"
old_backups_count="$(find -mtime +7 -type f | wc -l)"
increment_old_backups_count=$((old_backups_count + 3))
if [ "$all_backups_count" -ge 3 ] && [ "$increment_old_backups_count" -le "$all_backups_count" ];then 
  echo "deleting ${old_backups_count} old backup files"; 
  find -mtime +7 -type f -delete; 
  echo "success"; 
fi

Приведенный выше скрипт работает в определенной степени, однако в тех случаях, когда резервные копии старше x дней (в данном случае 7), он вообще не удаляет какие-либо резервные копии. Лучший сценарий должен быть;

  • Если файлы резервных копий имеют размер более 3 и все старше 7 дней, самые старые файлы резервных копий следует удалять до тех пор, пока в них не останется только 3 файла резервных копий, которые должны быть самыми последними.
  • Кроме того, я уверен, что мой сценарий требует много рефакторинга
...