Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Створення резервних копій з ротацією бекапов. Bash скрипт

  1. Бекап сайтів і Баз Даних
  2. Переходимо далі до бекапіть Баз Даних.
  3. Завантаження даних на FTP

У минулій статті було розглянуто спрощений варіант бекапа сайту з можливістю завантажити бекап на сервер FTP.

Згодом у мене виникла потреба зробити більш поліпшену версію скрипта для створення бекапа всього сервера (файли декількох сайтів і їх БД), а також завантажувати на FTP все це господарство c допомогою cURL, так як на сервері не було встановлено FTP клієнт і встановити його НЕ було можливості. Також потрібно було видаляти на FTP сервері старі бекапи, щоб не засмічувати місце на диску.

Бекап сайтів і Баз Даних

Почнемо з налаштувань. Зазначимо доступи до БД під якими будемо архівувати Базу Даних:

MUSER = "root" MPASS = "superpassword" MHOST = "localhost"

Задамо шлях до каталогу в якому будемо архівувати дані з сайтами і куди будемо зберігати тимчасові архіви, до вивантаження на FTP:

SITEDIR = / var / www / sites
BACKUP = / var / www / backup

SITEDIR - все директорії з сайтами які лежать всередині цього каталогу будуть архівувати в окремі архіви. Наприклад є каталоги /var/www/sites/site1.ru і /var/www/sites/site2.ru - відповідно ми отримаємо два архіву site1.ru.tar.gz і site2.ru.tar.gz

Далі встановлюємо поточну дату, щоб позначати бекапи і було зрозуміло за який день вони зроблені:

NOW = $ (date +% Y% m% d)

Вказуємо шлях до бінарники:

TAR = "$ (which tar)" GZIP = "$ (which gzip)" MYSQL = "$ (which mysql)" MYSQLDUMP = "$ (which mysqldump)"

Тепер створимо в директорії для бекапів BACKUP тимчасову директорію з поточною датою, туди будемо складати проміжні архіви з БД і з файлами сайтів, перед тим як завантажимо їх у загальний архів.

mkdir $ BACKUP / $ NOW

Далі зберігаємо в змінну LS список всіх сайтів з вказаною нами директорії SITEDIR, щоб по черзі їх заархівувати.

LS = "$ (cd $ SITEDIR; ls)" for site in $ LS do cd $ SITEDIR; $ TAR -czf $ BACKUP / $ NOW / $ site.tar.gz $ site done

Синтаксис "$ (...)" вказує що нам потрібно виконати команду всередині дужок і результат виконання привласнити змінної LS. Після цього проходимо по директоріях циклом в якому спочатку переходимо в цю директорію, а потім архівуємо вміст. В директорію ми заходили для того щоб були короткі шляхи в архівах виду:

site1.ru/index.html site1.ru/css site1.ru/css/style.css

а не такого виду:

/var/www/sites/site1.ru/index.html /var/www/sites/site1.ru/css /var/www/sites/site1.ru/css/style.css

Після того як ми загнали всі сайти в окремі архіви, потрібно тепер їх заархівувати в один загальний архів для даних сайту.

ARCHIVESITE = $ BACKUP / server- $ NOW.tar.gz cd $ BACKUP / $ NOW; $ TAR -zcvf $ ARCHIVESITE ./

У ARCHIVESITE - вказуємо що це архів з даними (server) і додаємо дату бекапа. Потім переходимо в директорію NOW і додаємо їх в архів.

Тепер можна очистити директорію NOW, для проміжних бекапов баз даних.

rm -rf $ BACKUP / $ NOW / *

У разом у нас вийшов один архів з даними (файлами) сайтів який поки лежить в директорії ARCHIVESITE. До нього трохи пізніше повернемося коли будемо завантажувати бекапи на FTP.

Переходимо далі до бекапіть Баз Даних.

Спочатку підключаємося до MYSQL і просимо показати нам список всіх БД у даного користувача. Після цього пройдемося циклом за цими базами і заархівіруем їх і складемо в директорію BACKUP / NOW

DBS = "$ ($ MYSQL -u $ MUSER -h $ MHOST -p $ MPASS -Bse 'show databases')" for db in $ DBS do if [$ db! = 'Information_schema'] then FILE = $ BACKUP / $ NOW / $ db.sql.gz $ MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $ MUSER -h $ MHOST -p $ MPASS $ db $ i | $ GZIP -9> $ FILE fi done

Також ми можемо відсікти непотрібні нам БД, наприклад information_schema які є службовими і вміст їх нас не цікавить.

Збираємо всі архіви з БД в один загальний і додаємо дату бекапа

ARCHIVEDB = $ BACKUP / mysql- $ NOW.tar.gz cd $ BACKUP / $ NOW; $ TAR -zcvf $ ARCHIVEDB ./

У ARCHIVEDB - вказуємо що це архів з Базою Даних (mysql) і додаємо дату бекапа.

Директорію NOW (і все що в ній є) можна видаляти вона нам більше не потрібна:

rm -rf $ BACKUP / $ NOW

Після всього цього у нас залишилося два архіву з файлами і даними:

ARCHIVESITE = $ BACKUP / server- $ NOW.tar.gz ARCHIVEDB = $ BACKUP / mysql- $ NOW.tar.gz

Завантаження даних на FTP

Тепер все це справа потрібно завантажити як то на FTP, для цих цілей ми будемо використовувати cURL.

Почнемо знову ж з налаштувань:

FTPD = "dir / to / backup" # директорія всередині FTP (спочатку і в кінці без слеша) FTPU = "user" # ім'я користувача FTPP = "password" # пароль FTPS = "site3.ru" # сервер FTP

Задаємо кількість резервних копій яке потрібно зберігати на FTP:

DAYS = 5 # денні бекапи не рахуючи поточного MONTHS = 3 # місячні бекапи на перше число місяця не рахуючи поточного

Вказуємо шлях до curl:

CURL = "$ (which curl)"

Далі переходимо в каталог з нашими бекапіть:

cd $ BACKUP

І завантажуємо їх на FTP в зазначену в настройках директорію:

$ CURL -u $ FTPU: $ FTPP ftp: // $ FTPS / $ FTPD / -T "{server- $ NOW.tar.gz, mysql- $ NOW.tar.gz}" -s

Для видалення зайвих бекапов (яким понад 5 днів) запитуємо список всіх файлів в директорії на FTP:

LIST = "$ ($ CURL -u $ FTPU: $ FTPP ftp: // $ FTPS / $ FTPD / -s -l)"

Перебираємо всі файли в циклі і дивимося щоб це були файли типу server- {date} .tar.gz і mysql- {date} .tar.gz. Якщо дата не збігається з дозволеною (останні N днів і 1 число останніх N місяців) ми їх видаляємо:

for li in $ LIST do EXIST = 0 if [ "$ li" = "." ] || [ "$ Li" = ".."] then continue fi for day in `seq 0 $ DAYS` do d =" $ (date +% Y% m% d -d "$ day days ago") "if [" server- $ d.tar.gz "=" $ li "] || [ "Mysql- $ d.tar.gz" = "$ li"] then EXIST = 1 continue fi done for month in `seq 0 $ MONTHS` do d =" $ (date +% Y% m01 -d "$ month month ago ")" if [ "server- $ d.tar.gz" = $ li] || [ "Mysql- $ d.tar.gz" = $ li] then EXIST = 1 continue fi done if [$ EXIST -eq 0] then $ CURL -u $ FTPU: $ FTPP ftp: // $ FTPS / $ FTPD / -s -X "DELE $ li" fi done

І очищаємо директорію BACKUP:

rm -rf $ BACKUP / *

На цьому все. У прикладі можете завантажити робочий скрипт, тільки не забувайте вказати свої актуальні доступи і додати цей скрипт в крон для щоденного запуску.

Якщо є пропозиції щодо поліпшення або зауваження - пишіть в коментарях

Завантажити робочий приклад

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    Подготовка к ЕГЭ по математике
    Статьи Опубликовано: 05.10.2017 Подготовка к ЕГЭ по МАТЕМАТИКЕ. 1 часть. Эффективный курс подготовки. Вы находитесь на сайте www.ege-ok.ru - Подготовка к ЕГЭ по математике. Меня зовут Инна Владимировна

    Куда поступить с обществознанием, русским и математикой
    Статьи Опубликовано: 06.10.2017 Сдача ЕГЭ. Куда поступать? Обществознание считается одним из самых популярных предметов, которые выпускники сдают на ЕГЭ. Ввиду высокого рейтинга дисциплины Рособрнадзор

    Сайт Майер Елены - ЕГЭ по математике
    Планируется проведение двух отдельных экзаменов – базового и профильного. Кому сдавать базовый ЕГЭ по математике? Базовый ЕГЭ организуется для выпускников, изучающих математику для общего развития

    ГДЗ решебник по математике 4 класс
    Извините, тут пока ничего нет ((( Решебник по математике 4 класс (Истомина Н.Б.) – не просто возможность быстро выполнить домашнее задание для учащегося, но и способ разобраться в труднорешаемых задачах.

    ГДЗ по математике 1 класс Самсонова самостоятельные работы
    Решебник по математике за 1 класс автора Самсоновой Л.Ю. 2012 года издания. Данное пособие предлагает готовые решения на разнообразные упражнения, направленные на активизацию всего учебного процесса. Здесь

    Для этой работы нужна математика
    Слотов: 956 Рулеток: 7 Лицензия: Pragmatic Play, Microgaming, ELK, Yggdrasil, Habanero, Amatic, Isoftbet, Netent, Rival, Igrosoft, Quickspin. Игры: Автоматы, Покер, Рулетки. Всего 963 Отдача: 98% Бонус

    Веселые задачи по математике 2 класс
    Во время занятий для того, чтобы немного переключить внимание школьников, но при этом не уйти от предмета, можно давать шутливые задачи на сообразительность. Буду пополнять коллекцию таких задач. Дополнительная

    Функция экспонента в Excel
    Одной из самых известных показательных функций в математике является экспонента. Она представляет собой число Эйлера, возведенное в указанную степень. В Экселе существует отдельный оператор, позволяющий

    ЕГЭ по математике 2018
    ЕГЭ по математике, наравне с русским языком , – обязательный экзамен для сдачи выпускниками 11-х классов. По статистике он самый сложный. Мы предлагаем ознакомиться с общей информацией об экзамене и

    Секреты эффективной и быстрой подготовки ко второй части ОГЭ по математике.
    Уважаемые девятиклассники, настоящие или будущие! Часто от вас приходится слышать следующие вопросы. Легко ли подготовиться к заданиям второй части ОГЭ по математике? Сколько для этого понадобится


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: