Guest User

Untitled

a guest
Nov 12th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Получение доступа к базе данных
  4. DB_DATABASE=table
  5. DB_USERNAME=user
  6. DB_PASSWORD=password
  7.  
  8. # Переменная для сохранения строки с датой
  9. BACKUP_DATE=`date +%Y-%m-%d__%H:%M:%S`
  10.  
  11. # Префикс, или, говоря иначе, начало имени файла
  12. BACKUP_PREFIX="db"
  13.  
  14. # Количество копий, которое нужно сохранять
  15. MAX_COPIES_COUNTER=7
  16.  
  17. # Директория, в которой будут храниться бэкапы
  18. DIRECTORY_FOR_BACKUPS="./database_backups"
  19.  
  20. # Собственно архивация
  21. echo 'Backuping database'
  22. mysqldump -u $DB_USERNAME -p$DB_PASSWORD $DB_DATABASE | gzip > $DIRECTORY_FOR_BACKUPS/$(echo $BACKUP_PREFIX)__$BACKUP_DATE.sql
  23. echo "Created $(ls $DIRECTORY_FOR_BACKUPS | sort -r | head -n 1)"
  24. # Подсчитываем количество копий, которое сохранено в папке для хранения резервных копий
  25. COPIES_COUNTER=`ls $DIRECTORY_FOR_BACKUPS | grep $BACKUP_PREFIX | wc -l`
  26. # Если файлов сохранено больше, чем нам необходимо
  27. if [ $COPIES_COUNTER -gt $MAX_COPIES_COUNTER ]
  28. then
  29. # Вычисляем, сколько файлов нужно удалить из папки
  30. NEED_TO_DELETE_COUNTER=$(($(ls $DIRECTORY_FOR_BACKUPS | wc -l)-$MAX_COPIES_COUNTER))
  31.  
  32. # Организуем цикл, количество циклов равно количеству файлов, которое нужно удалить
  33. for (( i==1; i<$NEED_TO_DELETE_COUNTER; i++ ))
  34. do
  35. # Сортируем список файлов, берем из него первый и удаляем
  36. # Файлы будут отсортированы по возрастанию, соответственно
  37. # удалится самый ранний файл
  38. echo "Deleting $(ls $DIRECTORY_FOR_BACKUPS | sort | head -n 1)"
  39. rm $DIRECTORY_FOR_BACKUPS/$(ls $DIRECTORY_FOR_BACKUPS | sort | head -n 1)
  40. done
  41. fi
Add Comment
Please, Sign In to add comment