Last active
November 12, 2018 16:47
-
-
Save kovalbogdan95/8cd04b41e79e66e48585b2040590055c to your computer and use it in GitHub Desktop.
Backup rotation based on backups count (deleting oldest)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Переменная для сохранения строки с датой | |
| BACKUP_DATE=`date +%Y-%m-%d__%H:%M:%S` | |
| # Префикс, или, говоря иначе, начало имени файла | |
| BACKUP_PREFIX="prod_db" | |
| # Количество копий, которое нужно сохранять | |
| MAX_COPIES_COUNTER=5 | |
| # Директория, которая будет архивироваться | |
| DIRECTORY_TO_BACKUP="./bk" | |
| # Директория, в которой будут храниться бэкапы | |
| DIRECTORY_FOR_BACKUPS="./data" | |
| # Собственно архивация | |
| # При архивации сообщения об ошибках будут погашены | |
| tar -cjf $DIRECTORY_FOR_BACKUPS/$(echo $BACKUP_PREFIX)__$BACKUP_DATE.tar.bz2 $DIRECTORY_TO_BACKUP 2>/dev/null | |
| echo "Creating $(ls $DIRECTORY_FOR_BACKUPS | sort -r | head -n 1)" | |
| # Подсчитываем количество копий, которое сохранено в папке для хранения резервных копий | |
| COPIES_COUNTER=`ls $DIRECTORY_FOR_BACKUPS | grep $BACKUP_PREFIX | wc -l` | |
| # Если файлов сохранено больше, чем нам необходимо | |
| if [ $COPIES_COUNTER -gt $MAX_COPIES_COUNTER ] | |
| then | |
| # Вычисляем, сколько файлов нужно удалить из папки | |
| NEED_TO_DELETE_COUNTER=$(($(ls $DIRECTORY_FOR_BACKUPS | wc -l)-$MAX_COPIES_COUNTER)) | |
| # Организуем цикл, количество циклов равно количеству файлов, которое нужно удалить | |
| for (( i==1; i<$NEED_TO_DELETE_COUNTER; i++ )) | |
| do | |
| # Сортируем список файлов, берем из него первый и удаляем | |
| # Файлы будут отсортированы по возрастанию, соответственно | |
| # удалится самый ранний файл | |
| echo "Deleting $(ls $DIRECTORY_FOR_BACKUPS | sort | head -n 1)" | |
| rm $DIRECTORY_FOR_BACKUPS/$(ls $DIRECTORY_FOR_BACKUPS | sort | head -n 1) | |
| done | |
| fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment