Статьи

Як робити бекап сайту на хостингу. Приклад скрипта.

Якщо у вас є сайт, то вам просто необхідно регулярно робити його бекап. Для популярних CMS, часто існують модулі для створення резервних копій. Але на громадському хостингу вони швидше за все працювати не будуть, через обмеження за часом виконання скриптів або очікування веб сервера. На цей випадок, деякі хостинг провайдери пропонують робити бекап вбудованими засобами панелі управління хостингом або використовувати cron / ssh. Нижче я покажу вам приклад скрипта, яким я роблю бекап цього сайту, як раз-таки за допомогою планувальника завдань cron на хостингу. При цьому цей бекап на хостингу не зберігається, і не займає зайвий обсяг далеко не безмежного простору (та й сенсу немає ніякого зберігати бекап там же де він робиться).

Коротше наша процедура буде складатися з двох частин:

1) Власне, створення резервної копії, для цього буде виконуватися скрипт на хостингу

2) Перенесення цього бекапа в інше місце, наприклад на домашній комп'ютер. Тут буде ще один скрипт, який відповідно буде виконуватися на комп'ютері.

І так, скрипт №1:

tar czf ~ / domains / site.ru / backups / tmp / files.tgz ~ / domains / site.ru / public_html / mysqldump -h 'server.hosting.ru' -u 'user' -p'password 'db_name> ~ /domains/mytechnote.ru/backups/tmp/mysql.sql tar czf ~ / domains / site.ru / backups / site_ru _ $ (date + "% Y-% m-% d"). tgz ~ / domains / site. ru / backups / tmp / * rm -rf ~ / domains / site.ru / backups / tmp / *

Давайте розберемо цей скриптик:

У першому рядку ми стискаємо всі файли сайту і поміщаємо їх в тимчасову папку.

У другій ми робимо дамп бази даних MySQL, соответсвенно вам потрібно замінити параметри підключення до бази, а саме ім'я сервера, ім'я користувача, пароль і ім'я бази.

У третьому рядку ми об'єднуємо архів файлів і дамп бази в один файл.

У четвертій ми видаляємо файли з тимчасової папки.

Для роботи цього скрипта у вас повинні бути створені папки куди буде робитися бекап (backups і backups / tmp).

Зберігаємо цей скрипт куди-небудь на хостингу, даємо ім'я, наприклад, backup.sh. Не забуваємо дати права на виконання цього файлу.

Після цього переходимо до налаштування cron на вашому хостингу, в залежності від використовуваної провайдером панелі, процедура настройки може відрізнятися, але принцип буде один. Нам потрібно створити розклад, вказати коли воно повинно виконуватися і в якості програми потрібно вказати наступне - / bin / sh /home/ваше_імя_пользователя/путь/до/сккріпта/backup.sh

Бувають панелі, де розклад не дуже зрозуміло задається, я поясню. Ви можете задати 5 цифр в налаштуваннях. Перша означає хвилини, друга годинник, треться день місяця, четверта місяць, п'ята день тижня. Тобто якщо ми хочемо що б бекап робився раз в день, о 8 ранку, то ваше завдання повинно виглядати так:

0 8 * * * / bin / sh /home/ваше_імя_пользователя/путь/до/сккріпта/backup.sh

На скріншоті можна подивитися, як це виглядає у мого хостера.

На скріншоті можна подивитися, як це виглядає у мого хостера

З першою частиною закінчили, тепер приступимо до другої. Як я вже говорив, що б не займати зайве місце на хостингу ми будемо копіювати наші файли по ftp і після копіювання видаляти їх з хостингу. Для цього переконайтеся, що на хостингу у вашого ftp користувача є доступ до папки куди складається бекап. Якщо немає, то створіть ще одного користувача, або дайте доступ існуючого.

Cкриптов написаний під Linux, але під Windows принцип буде приблизно такою ж, погуглити на тему bat ftp.

#! / Bin / bash ftp -in адрес_ftp << END_SCRIPT user Ваше_імя_пользователя ваш_пароль binary cd / backups lcd / mnt / wd-backup / backup / site mget site * mdelete site * END_SCRIPT

Розберемо цей скрипт.

У другій сходинці підключаємося до сервера, вам потрібно вказати адресу ftp сервера.

У наступній сходинці ви повинні вказати ім'я та пароль вашого користувача

У четвертій переходимо в папку на ftp сервері, шлях вказується щодо кореня ftp, тобто щодо тієї папки в яку ви потрапляєте, коли заходите на сервер по FTP.

Далі переходимо в папку на своєму комп'ютері.

Потім копіюємо всі файли, у яких назва починається на site.

Після чого видаляємо ці файли.

Зберігаємо цей скрипт куди небудь, даємо ім'я наприклад ftp-copy.sh і даємо цьому скрипту право на виконання.

chmod + x ftp-copy.sh

Після цього створимо розклад, що б скрипт запускався автоматично, для цього набираємо команду crontab -e. І в розпочатому файлі в самий низ, додамо рядок:

0 10 * * * / bin / sh /home/sanglyb/scripts/ftp-copy.sh

Відповідно вам потрібно змінити шлях до скрипта на ваш. Це завдання буде запускатися кожен день о 10 ранку.

Ось і все, тепер дані вашого сайту будуть набагато більш збережені. У підсумку, у мене налаштована так що, в 8 ранку бекап робиться на хостингу і в 10 він копіюється до мене на комп'ютер.

Відео по темі:

Новости