Резервное копирование базы данных MySQL и каталогов в Ubuntu

Резервное копирование базы данных MySQL и каталогов в Ubuntu
Комментарии: 5

Рассмотрим как реализовать автоматическое создание резервной копии файлов сайта и MySQL базы данных на сервере под управлением Ubuntu. Настроим периодичность создания копий с разными именами.

  1. Создаем в домашнем каталоге подкаталог «backup»:
    sudo mkdir backup
  2. Создаем и открываем на редактирование текстовый документ:
    sudo nano backup-script.sh
  3. Пишем в него команды:
    DIR=`date +%F_%H-%M`;
    mkdir /home/backup/$DIR;
    mysqldump -uroot -p12345 my_girl_db > /home/admin/backup/my_girl_db.sql
    zip -r -0 /home/www/you_site.ru/ /home/admin/backup/$DIR/
    
    • в переменную «DIR» записываем текущую дату, час и минуту;
    • создаем в каталоге «backup» подкаталог с именем «DIR»;
    • создаем дамп базы данных с именем «my_gyrl_db», предварительно указав имя администратора базы и его пароль. (директивы -u и -p пишутся слитно с параметрами);
    • архивируем каталог с сайтом, указав степень сжатия от 0 до 9 (0 - без сжатия).

    Если требуется исключить какие-то подкаталоги или файлы, то в конце добавим:

    -x "/home/www/you_site.ru/private/*"

    Не забудьте, в Ubuntu должен быть установлен zip архиватор: sudo apt-get install zip.

    сервер

  4. Cохраняем файл (Ctrl+O) и выходим из него (Ctrl+X).
  5. Теперь редактируем конфигурационный файл планировщика заданий (admin меняете на свой логин):
    sudo crontab -u admin -e

    Либо так (admin меняете на свой логин):

    sudo nano /var/spool/cron/crontabs/admin
  6. В конец конфигурационного файла прописываем правило:
    00 18 * * * /home/admin/backup-script.sh

    В нём указано что скрипт «backup-script.sh» будет запускаться каждый день в 18:00. Вместо звездочек могут стоять следующие значения:

    • день месяца (1..31)
    • месяц (1..12)
    • день недели (1..7)

    Примечание: текущее время в терминале Ubuntu можно посмотреть командой «date».

  7. Теперь в указанное время «cron» должен выполнить команды из файла «backup-script.sh».

    Примечание: если «cron» не выполнил скрипт, то попробуйте выставить права 777 скрипту и каталогу «backup». Права каталогу выставляются командой sudo chmod -R /home/admin/backup 777.

копирование

Оставлять резервную копию на той же машине, где находится источник не безопасно. Лучше хранить её на удаленном сервере. Сделать это можно разными способами:

  • Автоматически отправлять файлы по почте (если они небольшого размера);
  • Установить на удаленной машине FTP сервер и передавать их по FTP;
  • Расшарить на удаленной машине директорию, смонтировать её на компьютере источнике;
  • Установить на исходной машине FTP сервер, а на удаленной машине установить программу для резервного копирования, например Cobian Backup (под Windows). Программа будет по протоколу FTP забирать созданные резервные копии к себе на машину.
Ещё интересное — 6
Комментарии —
  1. Grandhustla
    Grandhustla09 декабря 2015, 12:30(был изменён)#
    zip -r 0 /home/www/you_site.ru/ /home/admin/backup/$DIR/
    0 — это не сжатие, это по сути имя файла в вашем коде. Читая ваш гайд напоролся на проблемы с архивацией. Мы архивируем и наш сайт и директорию в который кладется ourfile.zip.

    Даже разграничив права доступа и став владельцем папки корневой зипованный файл создается криво. не в той папке, куда указываешь.

    в общем вот правильный код:

    zip -r -0 ourfile.zip /home/www/you_site.ru/
    sh скрипт вообще не работает толком. базу он мне не создал.
    1. Andy Si09 декабря 2015, 12:45#
      Да, точно, должно быть тире, исправлю.
      sh скрипт работал, но базу он и не создаёт, он делает её дамп в sql файл.
      1. Grandhustla
        Grandhustla09 декабря 2015, 13:11(был изменён)#
        Тоже неправильно написал. Дамп базы он делает. Я по привычке в sh файл написал — sudo и т.д. Не знаю, я вроде скрипт поправил, конечно, но файл и директорию он не создал. Он создал архив с именем date.zip и сразу папку date в той же директории. Т.е. в общем он создал конечно файлы указанные в коде, но создал их криво:)
    2. Alex
      Alex01 октября 2023, 17:06#
      тупарые копирайтеры передирают друг у друга статью с ошибками без логической последовательности. чтобы сделать БД надо для начала выяснить знать как она называется, пирать ты тупорылый.
      1. Andy Si02 октября 2023, 11:46#
        Чего, таблетку не принял?)
      © REALADMIN.RU   2024 г.
      Страница сгенерирована: 0,1846 s | 4 mb.
      На каком уровне Вы играете в шахматы?
      OPROS