Created
November 12, 2018 16:49
-
-
Save kovalbogdan95/36415b5e2b3b6f0fa6dc6ff42808446c to your computer and use it in GitHub Desktop.
Database backup rotation
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 | |
| # Получение доступа к базе данных | |
| DB_DATABASE=table | |
| DB_USERNAME=user | |
| DB_PASSWORD=password | |
| # Переменная для сохранения строки с датой | |
| BACKUP_DATE=`date +%Y-%m-%d__%H:%M:%S` | |
| # Префикс, или, говоря иначе, начало имени файла | |
| BACKUP_PREFIX="db" | |
| # Количество копий, которое нужно сохранять | |
| MAX_COPIES_COUNTER=7 | |
| # Директория, в которой будут храниться бэкапы | |
| DIRECTORY_FOR_BACKUPS="./database_backups" | |
| # Собственно архивация | |
| echo 'Backuping database' | |
| mysqldump -u $DB_USERNAME -p$DB_PASSWORD $DB_DATABASE | gzip > $DIRECTORY_FOR_BACKUPS/$(echo $BACKUP_PREFIX)__$BACKUP_DATE.sql | |
| echo "Created $(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