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

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

Наша взаимовыгодная связь https://banwar.org/

У минулій статті було розглянуто спрощений варіант бекапа сайту з можливістю завантажити бекап на сервер 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 / *

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

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

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

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

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


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

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

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

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