Резервное копирование Ubuntu | |||||
|
Короткий обзор резервного копирования Ubuntu постараюсь пойти от простого к сложному, начиная от простого резервного копирования все системы 1 командой и заканчивая резервным копированием Ubuntu в автоматическом режиме без нашего участия. А так же дополню это все облегченным способом при резервном копировании Ubuntu через панель администрирования сервера Webmin. Для удобства работы с Linux Ubuntu server устанавливаем mc - аналог Norton Commander: sudo apt-get update sudo apt-get upgrade sudo apt-get install mc Так же есть альтернативный способ в Windows, за счет применения программы WinSCP, так же похож на Norton Commander разница лишь в том, что работает она исключительно по сети, а так же производит подключение через SSH протокол. Обратите внимание, что при подключении вы должны быть root пользователем, а на сервере заранее должен быть активирован и установлен супер пользователь (прописан пароль). Простое резервное копирование Ubuntu Для того что бы выполнить резервное копирование всей системы, достаточно выполнить всего одну команду: sudo tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys / А теперь распишу что означает это команда. С правами суперпользователя (sudo) создаём тарбол (tar с ключём c) и архивируем его архиватором gz (ключ z). При этом с помощью ключа --exclude исключаем из архива системные директории и файлы устройств и, конечно же, сам архив (чтобы он рекурсивно не начал паковаться сам в себя). В итоге, получаем в корне наш полный архив системы в файле backup.tgz Как его потом развернуть? Ну, во-первых, нужна будет всё-таки работающая система. Например, можно провести «читсую» установку (или же загрузиться с LiveCD). Будем считать, что у нас есть работающая система, в которой мы хотим развернуть наш архив. Хватит тоже одной команды: tar xvpfz /backup.tgz -C / Благодаря ключику p они сохраняются в исходном состоянии и правами. Поскольку заранее не известно какого типа у Вас данные и, соответсвенно, насколько плотно они сожмутся. Как минимум вы должны иметь на диске 50% свободного места, для ее проверки выполните седующую команду: df Как образец: root@server:~# df Файловая система 1K-блоков использовано, Разрешено использовать% смонтирована на /dev/mapper/server-root 474881160 3791780 446966808 1% / none 954556 200 954356 1% /dev none 961680 0 961680 0% /dev/shm none 961680 88 961592 1% /var/run none 961680 0 961680 0% /var/lock none 474881160 3791780 446966808 1% /var/lib/ureadahead/debugfs /dev/sda1 233191 58548 162202 27% /boot В реальности же, если у вас не лежит множество других архивов на диске и всяких фильмов с прочими медиа, то должно хватить и 30%. Автоматическое резервное копирование Ubuntu Создаем файл backup.save в корне, в котором будет скрип для резервного копирования: sudo nano /backup.save Жмем Ctrl+O для сохранения и Ctrl+X для выхода Создаем папку /mnt/backup в которую будем делать резервную копию системы: sudo mkdir /mnt/backup Делаем наш файл backup.save исполняемым: sudo chmod a+x /backup.save Заходим в mc (для удобства): sudo mc Далее идем в корень и открываем наш файл нажатием F4 и вставляем в наш backup.save файл следующий код (нажав Shift+Insert): #!/bin/bash cd /mnt/backup sudo tar cvpzf /mnt/backup/backup_`date +%Y.%m.%d_%H_%M`.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys / >> /dev/null 2>&1 Этот код создает архив дата_и_время_создания.tgz в папке /mnt/backup/ исключая папки: proc, lost+found, mnt, sys Жмем F2 для сохранения и F10 для выхода. Проверяем работоспособность просто запустив наш файл в mc нажатием Enter. Если все сделали правильно, то в папке /mnt/backup появится наш файл. Периодически заходя в эту папку мы увидим как меняется размер файла. Время резервного копирования естественно зависит от количества информации на сервере и его скорости. Для перехода в mc в терминал жмем Ctrl+O и обратно, а так же не забываем про Меню в mc - F9 Автоматическое резервное копирование Ubuntu на другой диск или по сети Примечание Сеть должна быть настроена Винчестер, на который будем делать резервную копию, должен быть подготовлен Подготавливаем жесткий диск Смотрим наш жесткий диск и монтируем в /mnt/hdd: sudo fdisk -l Диск /dev/sda: 40.0 ГБ, 40020664320 байт 255 heads, 63 sectors/track, 4865 cylinders Units = цилиндры of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0000c5e7 Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 4661 37431296 83 Linux /dev/sda2 4661 4866 1648641 5 Расширенный /dev/sda5 4661 4866 1648640 82 Linux своп / Solaris Диск /dev/sdb: 20.0 ГБ, 20020396032 байт 255 heads, 63 sectors/track, 2434 cylinders Units = цилиндры of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd5df5ded Устр-во Загр Начало Конец Блоки Id Система /dev/sdb1 1 2434 19551073+ 83 Linux root@linux:/etc# Монтируем: sudo mount /dev/sdb1 /mnt/hdd Чтобы после перезагрузки сервера hdd автоматом монтировался, допишем строку в файл /etc/fstab: sudo nano /etc/fstab [...] /dev/sdb1 /mnt/hdd ext4 rw,user,auto 0 0 Ctrl+O для сохранения и Crtl+X для выхода Подготавливаем сетевую папку sudo mkdir /mnt/win sudo mount //192.168.0.1/mydoc /mnt/win -o guest,rw,iocharset=utf8 Если для доступа к сетевой папке требуется логин и пароль: sudo mount //192.168.0.1/mydoc /mnt/win -o user=ваш_логин,password=ваш_пароль,iocharset=utf8 Если имя сетевой папки содержит пробел, то необходимо написать команду следующим образом: sudo mount "//192.168.0.1/my doc" /mnt/win -o user=ваш_логин,password=ваш_пароль,iocharset=utf8 Для того что бы размонтировать папку выполните команду: sudo umount /mnt/win Я не стал прописывать в /etc/fstab автомонтирование сетевой папки. Я буду монтировать ее только тогда, когда будет запускаться скрипт на резервное копирование. Создаем файл backup.save в корне системы и делаем его исполняемым: #!/bin/bash cd /mnt/hdd sudo tar cvpzf /mnt/hdd/backup_`date +%Y.%m.%d_%H_%M`.tgz --exclude=/proc -- exclude=/lost+found --exclude=/mnt --exclude=/sys / >> /dev/null 2>&1 sudo mount //192.168.0.1/mydoc /mnt/win -o user=ваш_логин,password=ваш_пароль,iocharset=utf8 cd /mnt/win sudo tar cvpzf /mnt/win/backup_`date +%Y.%m.%d_%H_%M`.tgz --exclude=/proc - - exclude=/lost+found --exclude=/mnt --exclude=/sys / >> /dev/null 2>&1 Жмем Ctrl+O для сохранения и Ctrl+X для выхода. Сделаем его исполняемым: sudo chmod a+x /backup.save Для проверки запустим его и проверим его работу. Для создания запуска по расписанию выполним следующее: sudo nano /home/123 название файла и его местонахождения в данном случае роли не играет В файл пропишем следующее: SHELL=/bin/bash MAILTO=user 00 21 * * * /backup.save Далее выполним: sudo crontab /home/123 После этого в каталоге /var/spool/cron/crontabs/ будет создан файл "root" примерно с таким содержимым: # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/home/user/test installed on Mon Mar 29 02:31:34 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) SHELL=/bin/bash MAILTO=user 00 21 * * * /backup.save еперь наш скрипт backup.save будет автоматически запускаться каждый день в 21:00. Если надо запускать в другое время, то просто меняем строку 00 21 * * * /backup.save Пример: * * * * * выполняемая команда - - - - - | | | | | | | | | ----- День недели (0 - 7) (Воскресенье =0 или =7) | | | ------- Месяц (1 - 12) | | --------- День (1 - 31) | ----------- Час (0 - 23) ------------- Минута (0 - 59) Для примера пару шаблонов: # каждый рабочий день в 22:00 0 22 * * 1-5 /backup.save # выполнять 1 числа каждого месяца в 14 часов 15 минут 15 14 1 * * /backup.save Восстановление системы из резервной копии Сохраняем каталог boot нашей чистой системы в папку /mnt/ Туда же сохраняем файл fstab из /etc/ распаковываем архив поверх чистой системы sudo tar xvzpf /mnt/backup/1.tgz -C / Далее копируем с заменой нашу сохраненную папку boot из /mnt/boot в корень системы с заменой И fstab из /mnt/ тоже копируем в /etc/ с заменой Перезагружаем систему sudo reboot Аналогичное резервное копирование Ubuntu в Webmin Я считаю это самый простой способ выполнения как резервного копирования, так и восстановление. Для начала у Вас уже должна быть установлена панель управления сервером Webmin (Установка Webmin на Ubuntu server) Заходим в пункт резервного копирования файловой системы Система - Резервное копирование. На данном изображении я показал уже созданную команду для резервного копирования всей системы. Для начала создания такой команды мы укажим наш каталог, так как мы копируем всю систему, то указываем корень " / ", и нажимаю кнопку "Добавить для резервного копирования каталог", открывшееся окно заполняем следующим образом. Т.к. я использовал удаленный FTP сервер, то добавил сервер имя пользователя и пароль для доступа а так же указал каталог и имя файла в который будет происходить резервное копирование Ubuntu. Кнопка "Сохранить и приступить к резервному копированию" приведет к созданию правила и немедленного его исполнения. Результат статуса резервного копирования будет выглядеть следующим образом: Расписание на выполнение данного правила я вам посоветовать не могу, в своем личном случае я выполняю резервное копирование в ручную по мере надобности, а вот резервные копии сайтов и настроек системы выполняются автоматически каждый день, раз в неделю и раз в месяц, Резервные копии сайтов включают в себя как сами файлы сайта так и их базы данных. |