Russian English German Ukrainian

Компьютерная помощь

(066) 72-00-654     (098) 44-74-068

г. Днепр

ж/м Левобережный-3

Ubuntu: резервная копия

Создать копию всего диска — прекрасный способ сохранить не только ваши данные, но и саму систему. Если ваш основной винчестер испортится, вы сможете заменить его на запасной с копией системы и продолжить работу буквально через несколько минут. Дело только за изготовлением такой копии.

tar архив

 

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

sudo tar cpvzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

Что означает это команда?

С правами суперпользователя (sudo) создаём тарбол (tar с ключём c) и архивируем его архиватором gz (ключ z). При этом с помощью ключа --exclude исключаем из архива системные директории и файлы устройств и, конечно же, сам архив (чтобы он рекурсивно не начал паковаться сам в себя). В итоге, получаем в корне наш полный архив системы в файле backup.tgz

Как его потом развернуть? Ну, во-первых, нужна будет всё-таки работающая система. Например, можно провести «читсую» установку (или же загрузиться с LiveCD). Будем считать, что у нас есть работающая система, в которой мы хотим развернуть наш архив. Хватит тоже одной команды:

tar xpvzf /backup.tgz -C /

Благодаря ключику p они сохраняются в исходном состоянии и правами.

dd

 

С командной строки можно применить для клонирования диска команду dd.

Выглядит это в самом общем виде вот так:

dd if=/dev/sda of=/dev/sdb

В данном примере /dev/sda — это диск, с которого снимается копия, а /dev/sdb — диск на который копируется. Имейте в виду, что dd делает побайтовую копию всего диска, в том числе и загрузочного сектора (MBR). Команда dd позволяет также скопировать диск не на другой диск, а просто в файл, который впоследствии можно поместить на хранение куда угодно, можно записать на DVD, а в случае нужды при помощи той же команды копировать обратно на место:

dd if=/dev/sda of=имя_файла_резервной_копии (например, backup.sda)

Скорость при копировании при помощи команды dd в приведенном варианте будет невелика, примерно такая же, как при помощи программы GParted. Дело в том, что по умолчанию dd работает блоками по 512 байт. Но можно в несколько раз повысить эту скорость, применив другой размер блока, скажем 100Мб:

dd if=/dev/sda of=/dev/sdb bs=100M

Кстати, с помощью dd легко записывать образы дисков на флэш-накопители:

dd if=/home/user/linux.iso of=/dev/sdb

Советую вам прочесть либо ман dd, либо статью про эту команду. http://rus-linux.net/lib.php?name=/MyLDP/consol/dd/dd-1.html

Видео: dd, tar

 

С помощью команды dd:

 

 

С помощью команды tar:

 

1. backup

 

2. restore

на этот же диск

 

Автоматическое резервное копирование 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
  • Сборка ПК для дома и офиса

  • Бесплатная диагностика

  • Гарантия

  • Самые низкие цены