Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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
Add Comment
Please, Sign In to add comment