Резервное копирование базы данных MySQL и каталогов в Ubuntu
Рассмотрим как реализовать автоматическое создание резервной копии файлов сайта и MySQL базы данных на сервере под управлением Ubuntu. Настроим периодичность создания копий с разными именами.
- Создаем в домашнем каталоге подкаталог «backup»:
sudo mkdir backup
- Создаем и открываем на редактирование текстовый документ:
sudo nano backup-script.sh
- Пишем в него команды:
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.
- Cохраняем файл (Ctrl+O) и выходим из него (Ctrl+X).
- Теперь редактируем конфигурационный файл планировщика заданий (admin меняете на свой логин):
sudo crontab -u admin -e
Либо так (admin меняете на свой логин):
sudo nano /var/spool/cron/crontabs/admin
- В конец конфигурационного файла прописываем правило:
00 18 * * * /home/admin/backup-script.sh
В нём указано что скрипт «backup-script.sh» будет запускаться каждый день в 18:00. Вместо звездочек могут стоять следующие значения:
- день месяца (1..31)
- месяц (1..12)
- день недели (1..7)
Примечание: текущее время в терминале Ubuntu можно посмотреть командой «date».
-
Теперь в указанное время «cron» должен выполнить команды из файла «backup-script.sh».
Примечание: если «cron» не выполнил скрипт, то попробуйте выставить права 777 скрипту и каталогу «backup». Права каталогу выставляются командой sudo chmod -R /home/admin/backup 777.
Оставлять резервную копию на той же машине, где находится источник не безопасно. Лучше хранить её на удаленном сервере. Сделать это можно разными способами:
- Автоматически отправлять файлы по почте (если они небольшого размера);
- Установить на удаленной машине FTP сервер и передавать их по FTP;
- Расшарить на удаленной машине директорию, смонтировать её на компьютере источнике;
- Установить на исходной машине FTP сервер, а на удаленной машине установить программу для резервного копирования, например Cobian Backup (под Windows). Программа будет по протоколу FTP забирать созданные резервные копии к себе на машину.
Даже разграничив права доступа и став владельцем папки корневой зипованный файл создается криво. не в той папке, куда указываешь.
в общем вот правильный код:
sh скрипт вообще не работает толком. базу он мне не создал.
sh скрипт работал, но базу он и не создаёт, он делает её дамп в sql файл.