Frameworks.suFrameworks.su Шпаргалка вебмастера

  • Главная
  • Framework Kohana
  • PHP
  • Javascript
  • CSS
  • Сервисы
    • Генератор паролей
  • Контакты
Главная / Администрирование / Резервное копирование сайта с помощью CRON

Резервное копирование сайта с помощью CRON

06.04.2015 3 17950

Данная статья расскажет как создать бэкап сайта и поможет настроить планировщик задач (cron) таким образом, чтобы он создавал резервные копии баз данных и данных Вашего сайта. А также сделаем возможность выгрузки бекапа на FTP.

Бэкап баз данных

Для того чтобы сделать бэкап базы данных достаточно запустить в командной строке:

mysqldump --opt -u user -p password  database > /path/to/backup/filename.sql

Вместо user нужно вписать имя пользователя, password - пароль, database - имя базы данных, и вписать нужный путь и название файла для сохранения. Даная команда выгрузить только указаную БД  и сохранит файл в указаную директорию без сжатия файла (в формате sql)

Для того чтобы выгрузить все БД указаного пользователя нужно вместо название БД написать опцию  --all-databases :

mysqldump --opt -u user -p password --all-databases  > /path/to/backup/filename.sql 

Если же нужно сжать sql файл в архив gzip:

mysqldump --opt -u user -p password --all-databases | gzip -c -9 > /path/to/backup/filename.gz

Бэкап данных сайтов

Для бэкапа сайта нужно запустить в той же консоли такую команду:

tar -czf /path/to/backup/filename.tar.gz /path/to/site

Таким образом создастся архив gzip c данными Вашего сайта. Не забудьте заменить  путь к бэкапу и сайту на свои директории предварительно создав их.

Автоматизация

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

Это можно сделать двумя способами:

Первый - самый простой, добавить обе команды непосредственно в cron. Это можно сделать или в Панели Управления сайтом, или же вручную в консоли:

crontab -e

и задать расписание по которому запускать скрипты, например:

30 2 * * * tar -czf /path/to/backup/filename.tar.gz /path/to/site > /dev/null 2>&1
30 3 * * * mysqldump --opt -u user -p password --all-databases | gzip -c -9 > /path/to/backup/filename.gz > /dev/null 2>&1

В первой строке запускается бэкап сайта в 2:30 каждый день, во второй - бэкап БД в 3:30 каждый день. "> /dev/null 2>&1" говорит, что стандартный вывод и сообщения об ошибках не нужно возвращать.

Второй способ - это создать скрипт с нужными нам командами и уже потом этот скрипт добавлять в cron.

Создаем файл /path/to/script/backup.sh:

#!/bin/bash

# Делаем бэкап сайта
tar -czf /path/to/backup/filename.tar.gz /path/to/site

# Делаем бэкап БД
mysqldump --opt -u user -p password --all-databases | gzip -c -9 > /path/to/backup/filename.gz

Обратите внимание, что в конце скрипта необходимо наличие отступа.

Добавляем скрипт  в cron:

30 2 * * * /usr/bin/perl /path/to/script/backup.sh

Выгрузка на FTP

Часто появляется необходимость не только сделать бэкап сайта но и выгрузить его на сторонный FTP. Реализовать данную возможность поможет команда:

lftp -e "put /path/to/filename.gz & exit" -u username,pass 192.168.1.1

Данная команда выгружает на FTP только указаный файл. Если нужно выгрузить сразу несколько файлов или все файлы *.gz из директории:

lftp -c 'open -e "mput /path/to/*.gz " -u username,password 192.168.1.1 exit'

Окончательный скрипт будет выглядеть таким образом:

#!/bin/bash

# Делаем бэкап сайта
tar -czf /path/to/backup/filename.tar.gz /path/to/site

# Делаем бэкап БД
mysqldump --opt -u user -p password --all-databases | gzip -c -9 > /path/to/backup/filename.gz

# Выгружаем все файлы .gz из директории на FTP
lftp -c 'open -e "mput /path/to/backup/*.gz " -u username,password 192.168.1.1 exit'

Незабудьте только указать параметры пользователя к доступу на FTP и БД,  адрес FTP сервера и путь для хранения бэкапов на сервере.

На этом и все, скрипт для бэкапа готов!

Здесь вы можете найти более улучшенную версию скрипта для бэкапа

Спасибо за внимание, будут вопросы пишите в комментариях!

Теги:
  • Backup
  • CRON

Комментарии

  1. vlad
    vlad
    08.09.2021 00:03

    Добавить бы в скрипт ротацию архивов, типа пять последних от каждого бэкапа оставляет а шестые удаляет. :)

    Ответить
  2. yolo
    yolo
    09.11.2015 14:54

    как исключить одну или несколько папок?

    Ответить
    • Администратор
      Администратор
      09.11.2015 17:36

      Чтобы исключить директорию или файл, используйте ключ --exclude='/directory/file'
      Например, чтобы исключить директорию cache из каталога '/var/www.site.ru' то нужно сделать так
      tar -czf /home/backup/site.ru.tar.gz --exclude='/var/www.site.ru/cache' /var/www.site.ru
      чтобы создалась пустая папка cache но без файлов
      tar -czf /home/backup/filename.tar.gz --exclude='/var/www.site.ru/cache/*' /var/www.site.ru

      Ответить

    Оставить комментарий Отмена

    *

    *

    *

    *

    Категории

    • PHP
      • Framework Kohana
    • Javascript
    • CSS
    • Администрирование

    Теги

    Framework Kohana Пример jQuery Уроки CRON Установка и настройка Backup CSS3 Валидация API Bash Cache Captcha i18n Linux

    Авторизация

    • Забыли пароль?
    • Регистрация

    Популярные статьи

    • Находим расстояние до ближайших станций метро

      Находим расстояние до ближайших станций метро

      17.02.2017 102982
    • Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

      Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

      02.07.2014 44646
    • Собственная система лайков на PHP и JQuery

      Собственная система лайков на PHP и JQuery

      06.04.2015 33241
    • Javascript — сумма прописью

      Javascript — сумма прописью

      07.07.2014 23090
    • Cross-domain ajax с помощью jQuery

      Cross-domain ajax с помощью jQuery

      24.04.2015 19964
    Copyright © 2014-2025 Frameworks.su. Все права защищены.