Резервное копирование системы. Создание загрузочной флэшки для установки Windows с использованием программы Rufus Чем отличается iso образ от dd

    Rufus - бесплатное программное обеспечение с открытым исходным кодом для форматирования съемных USB-носителей данных и создания загрузочных дисков с различными операционными системами. Программа отличается простотой использования, высокой скоростью работы и поддерживает многоязычный интерфейс.

Скачать программу можно на сайте разработчика . На странице размещены ссылки для скачивания стандартной версии Rufus , и переносимой Rufus portable , которые ни чем не отличаются, кроме имени исполняемого файла и места хранения настроек. Настройки программы включают в себя используемый язык и параметры проверки обновлений. Стандартная версия хранит эти параметры в реестре, а переносимая – в файле rufus.ini каталога программы. Rufus не требует установки в системе – просто скачайте исполняемый файл и запустите его. Интерфейс программы очень прост:

В целом, программа Rufus не является чем-то уникальным в области средств для создания загрузочных носителей и главное ее достоинство – простота использования. Для того, чтобы создать загрузочную флэшку с ее помощью, достаточно иметь исходный образ загружаемой системы и уметь нажать на кнопку ”Старт”. Все выбираемые параметры и настройки, по умолчанию уже рассчитаны на использование программы для работы на компьютере стандартной конфигурации.

Наиболее просто и удобно использовать Rufus для создания загрузочной флэшки (загрузочного USB-диска) из ISO-образов установочных дисков Windows или Linux, а также дисков аварийного восстановления системы и средств диагностики.

При создании загрузочной флэшки Windows достаточно выбрать устройство, на которое будет выполняться запись и файл загрузочного iso-образа. Прочие параметры программа подставит сама.

Если в наличии нет файла с образом ISO, то его можно создать на базе физического компакт-диска (или из набора файлов дистрибутива) с помощью программ для записи CD/DVD, таких как известные Nero, Alcohol, или свободно распространяемых CDBurnerXP или ImgBurn .

Порядок создания загрузочной флэшки с Windows следующий:

  • выбрать флэшку, на которую будет записываться образ. В отличие от многих подобных программ, Rufus отображает метку тома, букву диска и его объем, поэтому при наличии нескольких съемных дисков в системе, легко выбрать тот, на который будет выполняться запись.

  • выбрать схему раздела и тип системного интерфейса. Rufus позволяет создавать флэшки для загрузки в интерфейсе обычного BIOS и для загрузки в среде UEFI, создавать загрузочные записи для томов MBR и томов GPT. По умолчанию принят режим "MBR для компьютеров с BIOS или UEFI" – наиболее распространенный на сегодняшний день режим для загрузочных флэшек.

  • выбрать файловую систему, которая будет использоваться на создаваемой загрузочной флэшке. По умолчанию, для загрузочных флэшек с Windows, используется файловая система FAT32 , но при необходимости, можно выбрать NTFS , если требуется использование файлов размером более 4 ГБ.

  • задать размер кластера. Размер кластера выбирается программой исходя из данных образа и типа файловой системы, но при необходимости, его можно изменить.

  • указать метку тома, которая будет задана для создаваемой флэшки.

  • задать параметры форматирования. Данные параметры лучше всего оставить по умолчанию и просто выбрать файл образа ISO. Для образов, созданных программой dd в Linux, нужно выбрать параметр DD-образ .

    После нажатия кнопки Старт программа выполнит форматирование флэшки, установит признак активного раздела, запишет главную загрузочную запись и загрузочную запись раздела, а также данные загрузочного носителя из ISO-образа. После завершения работы Rufus можно выполнять загрузку с использованием полученной загрузочной флэшки.

    Использование технологии виртуализации для тестирования загрузочных флэшек. Ссылки для скачивания бесплатных и удобных программ для упрощения процесса создания, отладки и проверки создаваемых загрузочных носителей.

    Создадим с помощью утилиты dd образ флешки с архивацией свободного места. Резервный образ пригодится, если вдруг внезапно перестанет работать оригинал с важной информацией. Например, флешка с закрытыми ключами электронных подписей руководства организации. Итак, у нас есть флешка /dev/sdd объемом 4ГБ, информация на которой занимает около 90МБ.
    du - sh / run / media / aleksey / Transcend

    89M /run/media/aleksey/Transcend

    Все команды выполняются от имени пользователя root . Или в соответствующих дистрибутивах перед командами добавляйте sudo .
    fdisk - l / dev / sdd

    Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc653eaa4 Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

    Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors

    Units: sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disklabel type: dos

    Disk identifier: 0xc653eaa4

    Device Boot Start End Sectors Size Id Type

    /dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

    Создав простой образ командой
    dd if = / dev / sdd of = sdd . iso bs = 4M conv = noerror ,
    мы обрекаем себя на хранение файла 4ГБ. А если бы флешка была емкостью 64ГБ? И не одна? Эту проблему нам поможет решить обычный архиватор, возьмем стандартный gzip .
    dd if = / dev / sdd bs = 4M conv = noerror | gzip - c > sdd . iso . zip
    где ключ -c позволяет работать со стандартным выводом.
    После завершения работы посмотрим на получившийся файл. ls - al sdd*

    Получился файл размером примерно 25МБ. Реальная экономия места на диске даже по сравнению с 4ГБ файлом!
    Для восстановления флешки из образа используем обратный порядок команд.
    gunzip - c sdd . iso . zip | dd of = / dev / sdd conv = noerror bs = 4M

    Также можно архивировать образы жестких дисков, где объемы на порядок больше.

    Кстати! Для наглядности процесса из-за отсутствия у dd своего прогресс-бара предлагаю использовать небольшую утилитку progress — Coreutils Progress Viewer. Установить её в Fedora не составит труда.
    dnf install progress
    Для других дистрибутивов нужный репозиторий можно найти по ссылке https://pkgs.org/download/progress .
    Установив и запустив утилиту командой watch progress во втором терминале (в первом у нас работает архиватор и dd) от имени того же пользователя, увидим примерно такую картину.

    man progress покажет Вам различные полезные ключи этой утилиты.

    Будьте внимательны так как при ошибке в название флешки в команде dd можно повредить винчестер хоста.

    Выведем обозначение разделов всех устройств

    и найдем среди них флеш накопитель:

    Sudo fdisk -u -l /dev/sd?

    Так же, для определения разделов на всех устройства, можно воспользоваться командой:

    Sudo cat /proc/partitions

    Синтаксис команды dd

    dd if=/AAAA of=/BBBB bs=CCCC count=DDDD conv=noerror
    • if : (input file) указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
    • of : (output file) указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
    • bs : количество байт, которые будут записаны за раз. То есть размер куска данных, которые будут прочитаны и записаны за раз. рекомендуют ставить bs= размеру кеша винчестера т.е. 8M 16M 32M
    • count : сколько кусков bs будет скопировано.
    • conv: позволяет подключать фильтрs, применимых к потоку данных. Фильтр «noerror» как раз отключает остановку работы программы, когда наткнется на ошибку чтения.

    Примеры

    Полное стирание диска

    Чтобы на носителе ничего нельзя было восстановить - можно забить его нулями, эта команда всегда закончиться ошибкой "на носителе кончилось место"

    Dd if=/dev/zero of=/dev/sdX

    Создание образа диска

    dd if=/dev/cdrom of=image.iso conv=noerror

    так же можно в систему

    Mount -o loop /PathToImageFile/image.iso /mnt/FolderMount

    Если что-то не получается, процесс разбивается на 2 уровня:

    Losetup -e /dev/loop0 /PathToImageFile/image.iso mount /dev/loop0 /mnt/FolderMount

    Операции с MBR

    MBR расположена в первых 512 байтах жесткого диска, и состоит из таблицы разделов, загрузчика и пары доп. байт. Иногда, ее приходится бекапить, восстанавливать и т.д. Бекап выполняется так:

    Dd if=/dev/sda of=mbr.img bs=512 count=1

    Восстановить можно проще:

    Dd if=mbr.img of=/dev/sda

    Копируем с архивированием

    (используя gzip) данные с флешки на винчестера.

    Dd if=/dev/sdX conv=sync,noerror bs=8M | gzip -c >/PathToSave/sdX.img.gz

    и обратно

    Gunzip -c /PathToFile/sdX.img.gz | dd of=/dev/sdX conv=sync,noerror bs=8M

    Копируем по сети

    dd if=/dev/sdX conv=sync,noerror bs=8M | ssh -c blowfish UserName@HostName "dd of=sdX.img.gz bs=8M"

    и обратно

    Dd if=sdX.img.gz | ssh -c blowfish UserName@HostName "dd of=/dev/sdX bs=8М"

    Как известно, «пользователи компьютера делятся на тех, кто делает бэкапы, и тех, кто будет их делать» . В этой статье мы рассмотрим различные способы резервного копирования (бэкапа) всей системы и, соответственно, восстановления из резервной копии.

    Сразу стоит отметить, что все операции стоит производить не «по-живому», т.е. не на работающей системе, а с liveCD или установленной на соседнем разделе/флэшке/usb-hdd системы. В случаях, когда простой в несколько минут критичен для системы, возможно копирование системы из-под самой себя, но при этом нужно учитывать некоторые дополнительные условия, которые в данной статье пока что не рассматриваются

    Далее по тексту для действий, выполняемые от имени суперпользователя , будет использоваться команда sudo , что является стандартом для Ubuntu. В других системах возможно получение привелегий суперпользователя через su , некоторые liveCD-системы по умолчанию работают в режиме суперпользователя

    tar

    Одним из наиболее популярных способов создания простейшего бэкапа является архивация данных с помощью tar . Преимуществами данного способа являются возможность инкрементного бэкапа (добавления файлов в существующий архив, удаления или изменения таковых), возможность извлечения из архива отдельных файлов, а также присутствие tar практически в любой Linux-системе.

    Создание архива

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

    Смонтируйте оба раздела. Для большей надежности можно смонтировать корневой раздел в режиме read-only (только для чтения), чтобы исключить вероятность случайного изменения данных

    Sudo mount /dev/sdXY /mnt/root -o ro sudo mount /dev/sdXY /mnt/backup

    (Вместо «sdXY» используйте ваши значения для нужных разделов. определить их можно с помощью sudo fdisk -l или sudo blkid)

    В случае, если вы используете отдельные разделы для /boot, /usr, /home и пр. и хотите включить их содержимое в бэкап, примонтируйте их в соответствующие папки

    Sudo mount /dev/sdXY /mnt/root/usr -o ro sudo mount /dev/sdXY /mnt/root/home -o ro

    При необходимости создайте на бэкап-разделе папку, в которой вы хотите разместить архив, например

    Sudo mkdir -p /mnt/backup/ubuntu/root

    Теперь можно приступить к созданию архива. Чтобы создать архив с gzip-сжатием, выполните

    Sudo tar -cvzpf -C /mnt/root /mnt/backup/ubuntu-sda1.tar.gz .

    (Ключ -p включает сохранение владельцев и прав доступа для файлов )

    Для bzip2-сжатия используйте

    Sudo tar -cvjpf /mnt/backup/ubuntu-sda1.tar.bz2 /mnt/root

    Для lzma-сжатия

    Sudo tar --lzma -cvpf /mnt/backup/ubuntu-sda1.tar.lzma /mnt/root

    Аналогично для lzo-сжатия - ключ --lzop вместо --lzma

    Различные алгоритмы сжатия дают разный размер архива, а также отличаются по производительности

    По завершении процесса отмонтируйте все смонтированные разделы

    Sudo umount /mnt/root{/boot,/var,/home,} /mnt/backup

    Восстановление из архива

    Создайте точки монтирования для корневого раздела и раздела, на котором хранится ваш архив

    Sudo mkdir /mnt/{root,backup}

    Примонтируйте раздел с архивом-бэкапом

    Sudo mount /dev/sdXY /mnt/backup -o ro

    Отформатируйте корневой раздел в ту же (или другую) ФС. Если вы используете отдельные разделы для /usr, /boot и пр. и архивировали их, отформатируйте их тоже

    (если вы восстанавливаете систему на новый жесткий диск, разметьте его с помощью fdisk/gparted и отформатируйте разделы)

    Некоторые файловые системы поддерживают задание UUID при форматировании. Это дает возможность создать ФС с таким же UUID, как у старой, что позволит избежать необходимости править fstab .

    Для ext2/3/4 UUID задается с помощью ключа -U , а еще больше упростить задачу можно командой вида

    Sudo mkfs.ext4 -L "label" -U "$(sudo blkid -o value -s UUID /dev/sda1)" /dev/sda1

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

    Bzip2 -dv /media/backup/sda5.dd.bz

    Теперь можно смонтировать образ

    Sudo mount /media/backup/sda5.dd -o loop /mnt

    (С опцией loop программа mount автоматически «подцепит» файл-образ на свободное loop-устройство, после чего смонтирует файловую систему)

    Теперь вы можете работать с содержимым образа как с обычной файловой системой, все ваши изменения запишутся в образ. По завершении работы отмонтируйте образ как обычную ФС

    Sudo umount /mnt

    dd - копирование всего жесткого диска

    В данном случае мы снова воспользуемся dd , только на сей раз сохраним все содержимое жесткого диска - с таблицей разделов, самими разделами и всеми данными. Преимущество данного метода в том, что можно за один шаг сохранить все установленные на этом жестком диске системы без необходимости бэкапить каждый раздел отдельно. Кроме того, при таком бэкапе сохранятся все данные, относящиеся к загрузчику - таким образом, после восстановления из бэкапа вам не нужны будут дополнительные манипуляции, вы сможете сразу же загрузиться с этого жесткого диска.

    Создание образа

    В целом процедура аналогична описанной выше для бэкапа отдельных разделов. В данном случае также применим совет о прочистке свободного места «нулями» - при наличии свободного времени проделайте это со всеми разделами.

    Перед началом операции убедитесь, что ни один из разделов данного жесткого диска не смонтирован. Сделать это можно запустив команду mount без параметров.

    Выберите раздел, на котором вы собираетесь разместить файл-обарз. Разумеется, это должен быть раздел другого жесткого диска. Также убедитесь в наличии достаточного количества свободного места на этом разделе (например, с помощью утилиты df) - объем свободного места должен соответствовать объему копируемого жесткого диска (при сжатии образ получится меньше, но это зависит от типа хранимых данных).

    Смонтируйте бэкап-раздел

    Sudo mount /dev/sdXY /mnt

    Теперь можно приступать

    Sudo dd if=/dev/sdX bs=1M conv=noerror,sync | lzma -cv > /mnt/hdd.dd.lzma

    (здесь «sdX» - диск, а не раздел! для копирования без сжатия команда аналогична приведенной выше для бэкапа раздела)

    В зависимости от размера жесткого диска и производительности компьютера процедура может занять продолжительное время (до нескольких часов). По завершении отмонтируйте бэкап-раздел

    Sudo umount /mnt

    Восстановление из образа

    Внимание! Данный способ предполагает полный откат к состоянию на момент создания архива с заменой всех данных!

    Перед началом работы убедитесь в надежности электропитания. Подключите сетевой адаптер, если у вас ноутбук, а также по возможности используйте ИБП или стабилизатор. При высокой интенсивности записи возрастает риск повреждения диска в случае сбоя питания

    Убедитесь, что ни один раздел восстанавливаемого диска не используется. Смонтируйте бэкап-раздел

    Sudo mount /dev/sdXY /mnt

    Можно приступать к процедуре

    Bzip2 -dc /mnt/hdd.dd.bz | sudo dd of=/dev/sdX bs=1M conv=sync,noerror

    Или же для несжатого образа

    Sudo dd if=/mnt/hdd.dd.bz of=/dev/sdX bs=1M conv=sync,noerror

    По завершении отмонтируйте бэкап-раздел

    Sudo umount /mnt

    Если вы хотите распаковать образ на другой жесткий диск, он должен иметь размер не меньше оригинального. В случае, если новый диск большего объема, вы сможете расширить разделы либо создать новый раздел на свободном месте с помощью parted/fdisk/gparted/etc

    Не используйте оба жестких диска («дубликат» и «оригинал») одновременно! При подключении обоих дисков в системе будет по два раздела на каждый UUID, что приведет к проблемам в работе или невозможности загрузки

    Монтирование образа

    По аналогии с образом раздела вы можете работать с образом жесткого диска как с обычным жестким диском. В данном случае процедура несколько усложняется, поскольку образ содержит несколько разделов.

    Если образ сжатый - распакуйте его. Теперь «подцепите» образ на loop-устройство

    Sudo losetup -fv /media/backup/sda.dd

    (С ключом -f программа автоматически найдет свободное loop-устройство, иначе необходимо явно указывать его)

    losetup выведет на экран имя использованного устройства - если вы не работаете с другим файлами-образами (iso, шифрованными контейнерами и пр.), это скорее всего будет /dev/loop0

    Теперь мы имеем устройство, являющееся для системы жестким диском, но не имеем доступа к его разделам. Добраться до разделов поможет программа kpartx (может потребоваться установка одноименного пакета)

    Sudo kpartx -av /dev/loop0

    (Ключ -a - добавить разделы для заданного устройства; -v - информативный вывод)

    Программа выведет имена созданных устройств для разделов диска: loop0p1 для первого раздела, loop0p2 - для второго, по аналогии с разделами обычного диска. Файлы устройств будут находиться в папке /dev/mapper

    Теперь можно работать с разделами и ФС на них. Например, смонтировать бывший sda5 и записать на него файлы

    Sudo mount /dev/mapper/loop0p5 /mnt

    По заверешнии отмонтируйте раздел

    Sudo umount /mnt

    Удалите устройства-разделы с помощью kpartx

    Sudo kpartx -dv /dev/loop0

    и освободите loop-устройство

    Sudo losetup -v -d /dev/loop0

    Все! Изменения записались, а ваш образ снова стал обычным файлом

    cp

    Здесь мы рассмотрим бэкап с помощью утилиты cp , т.е. с использованием простого копирования. Вообще-то, это не самый оптимальный способ, и подходит он скорее для копирования системы на другой жесткий диск / раздел / компьютер, нежели для создания резервной копии.

    С другой стороны, данный способ имеет ряд преимуществ:

      Универсальность - cp вы найдете в любой Linux-системе

      Низкая требовательность к ресурсам (вследствие отсутствия сжатия и простоты механизма)

      Простота дальнейшей работы с резервной копией (добавления/изменения/удаления файлов, извлечения нужных данных и пр.)

    Создание копии

    Создайте точки монтирования для корневого и бэкап-разделов

    Sudo mkdir /mnt/{root,backup}

    Смонтируйте оба раздела

    Sudo mount /dev/sdXY -o ro /mnt/root sudo mount /dev/sdXY /mnt/backup

    Смонтируйте разделы для /usr, /boot и пр., если таковые имеются

    Sudo mount /dev/sdXY -o ro /mnt/root/home

    Создайте на бэкап-разделе папку для своего бэкапа

    Sudo mkdir /mnt/backup/ubuntu

    Можно начинать

    Sudo cp -av /mnt/root/* /mnt/backup/ubuntu

    (ключ -a включает копирование ссылок «как есть», сохранение всех возможных атрибутов файлов и рекурсивный режим. ключ -v - вывод информации о происходящем)

    По завершении процесса отмонтируйте все разделы

    В дальнейшем вы сможете заархивировать ваши данные любым удобным способом

    Восстановление из копии

    Внимание! Данный способ предполагает полный откат к состоянию на момент создания архива с заменой всех данных!

    Создайте точки монтирования для разделов

    Sudo mkdir /mnt/{root,backup}

    Смонтируйте бэкап-раздел

    Sudo mount /dev/sdXY -o ro /mnt/backup

    Отформатируйте корневой раздел и разделы /usr, /boot и пр., если таковые имеются. (Про форматирование разделов с сохранением UUID см. в разделе про )

    Sudo mkfs.reiserfs -l "root" /dev/sdXY sudo mkfs.ext2 -L "boot" /dev/sdXY sudo mkfs.ext4 -L "home" /dev/sdXY

    Смонтируйте свежесозданные ФС

    Процесс копирования происходит аналогично, только в обратном направлении

    Sudo cp /mnt/backup/ubuntu/* -av /mnt/root

    По завершении копирования отредактируйте fstab , исправив UUID разделов

    Отмонтируйте разделы

    Sudo umount /mnt/backup /mnt/root/{usr,home,}

    squashfs

    sudo mkfs.reiserfs -l "root" /dev/sdXY sudo mkfs.ext2 -L "boot" /dev/sdXY sudo mkfs.ext4 -L "home" /dev/sdXY

    Смонтируйте свежесозданные ФС

    Sudo mount /dev/sdXY /mnt/root sudo mount /dev/sdXY /mnt/root/usr sudo mount /dev/sdXY /mnt/root/var

    Можно приступать! Для распаковки образа используется утилита unsquashfs

    Sudo unsquashfs -d /mnt/root -f /mnt/backup/ubuntu-root.sqfs

    (Ключ -d задает путь для распаковки, с ключом -f программа будет использовать существующие папки вместо попыток создать новые)

    Как и при создании образа, вы увидите индикатор прогресса и множество другой полезной информации.

    По завершении отредактируйте fstab , заменив UUID разделов на новые (если вы форматировали разделы с теми же UUID, пропустите этот шаг)

    Sudo nano /mnt/root/etc/fstab

    Сохраните файл и отмонтируйте все разделы

    Sudo umount /mnt/backup /mnt/root{/usr,/var,}

    Монтирование образа

    squashfs монтируется как любой другой образ - через loop-устройство . Поддержка squashfs ядром включена во множестве дистрибутивов, в том числе и в Ubuntu, так что достаточно будет просто воспользоваться командой mount с опцией loop

    Sudo mount /media/backup/ubuntu-root.sqfs -o ro,loop /mnt

    (Опция ro не обязательна, т.к. записать туда все равно ничего не получится)

    Теперь вы можете скопировать из образа любые нужные файлы. Добавить что-либо таким способом не получится, для этого нужно будет опять воспользоваться mksquashfs

    По завершении отмонтируйте образ как обычную ФС

    Sudo umount /mnt

    rsync

    Подобно cp , rsync работает с файлами, а не с блочными устройствами. Особенность rsync в том, что он не копирует файлы, которые уже есть в точке назначения. По умолчанию он проверяет размер и время изменения файлов, но можно проверять и хэш (обычно это делается, когда нужна повышенная безопасность).

    Простое использование

    Синтаксис rsync подобен cp:

    Rsync -a /mnt/root /mnt/backup

    Параметра -a очень часто бывает достаточно, он обеспечивает самое нужное: рекурсивное копирование директорий, сохранение информации о владельце и группе и т.д. Для отображения подробной информации о копировании используется ключ -v , с ним будьте внимательны, в потоке данных можно пропустить сообщение об ошибке. Ключ -x гарантирует, что rsync не выйдет за пределы указанной файловой системы.

    В документации к rsync описана масса параметров. Например, есть такие, которые позволяют выполнять копирование по SSH, или удаляют файл из точки назначения, если он был удалён в исходной директории.

    «Умное» копирование позволяет сократить время простоя системы. Запускаем rsync прямо на работающей системе, данные в которой постоянно изменяется, rsync копирует данные, скажем, в течение нескольких часов. Затем переводим систему в read-only, снова запускаем rsync , теперь он копирует только те файлы, которые изменились за эти несколько часов. Через несколько минут мы имеем полную копию исходной ФС. Время простоя при этом сократилось на порядок по сравнению с оффлайн-копированием. А в некоторых случаях будет достаточно и одного онлайн-копирования без перевода системы в read-only.

    Сохранение предыдущих копий

    Строго говоря rsync не является средством резервного копирования – это средство синхронизации. Это важно при создании регулярных копий, поскольку, если какой либо важный файл был удалён в рабочем каталоге источнике – rsync удалит его и в резервной копии. Для повышения сохранности данных целесообразно сохранять старые резервные копии. Однако простое сохранение нескольких копий потребует много памяти на жёстком диске. Если копии имеют много одинаковых файлов, то это приводит к ненужной избыточности. Эту проблему позволяет решить использование жёстких ссылок.

    Суть состоит в том, что в современных файловых системах (в том числе Ext4) адресация файла производится в два этапа: имя файла указывает на уникальный номер файла (индексный дескриптор или i-node), а этому номеру сопоставлены сами данные. Любое имя файла это, по факту, жёсткая ссылка на этот номер. Следовательно, файл (набор данных) может иметь несколько имён и быть разных каталогах, а это позволяет устранить избыточность в случае необходимости дублирования файлов (ведь жёсткая ссылка занимает мало памяти). Сами данные не удаляются до тех пор пока не будет запрошено удаление последней жёсткой ссылки.

    Существенное ограничение состоит в том, что жёсткие ссылки возможны только в пределах одной файловой системы.

    Синхронизация содержимого каталога для текущей резервной копии с каталогом источником:

    Rsync \ --archive \ --delete --delete-excluded \ # удаление из резервной копии несуществующих в источнике и исключённых файлов --progress \ # выводить информацию о прогрессе передачи "/home/user/Files/" \ # каталог источник "/backup/latest/" \ # каталог для текущей резервной копии --exclude ="/Public/" # исключение ненужных каталогов

    В каталоге « /backup/latest/ » будет создана копия всех необходимых файлов и каталогов из источника и удалено всё лишнее.

    Создание ещё одной текущей резервной копии без избыточности:

    cp \ --archive \ # сохранять всю дополнительную информацию о файлах --link \ # использовать жёсткие ссылки для файлов - устранение избыточности "/backup/latest/" \ # источником является полученная выше текущая резервная копия "/backup/$(date +%Y-%m-%d_%H-%M-%S) /" # пункт назначения - каталог с датой в имени для удобства (см. man date)

    При следующем создании резервной копии rsync удалит в каталоге « /backup/latest/ » файлы которые были удалены/исключены/изменены в каталоге источнике (измененные файлы сначала удаляются, а затем записывается новая версия). Однако удалены будут лишь имена файлов (те же жёсткие ссылки), сами файлы (данные) сохранены, поскольку на них были созданы жёсткие ссылки в соседнем каталоге командой «cp».

    Прочие инструменты

    Существует масса приложений для создания бекапов в Linux. Можно воспользоваться поиском по слову «backup» в Центре приложений Ubuntu, чтобы найти доступные в Ubuntu программы для работы с резервными копиями.

    Для корпоративной среды и просто для достаточно масштабных и критичных заданий бекапа можно порекомендовать разобраться в одной из самых популярных и мощных систем резервного копирования для Linux, которая называется Bacula

    Кстати, в сети можно найти и русскоязычные руководства

    Parted Magic

    Parted Magic - еще один отличный, но платный дистрибутив, содержащий целую коллекцию средств для бэкапа и восстановления информации, работы с дисками и разделами, а также восстановления утерянных данных. Он поддерживает множество ФС, LVM2 и RAID (как аппаратный, так и программный) и содержит в себе таки средства как fsarchiver , GParted , вышеупомянтый Clonezilla, и все, что потребуется для описанных в этой статье способов. Кроме того, в состав дистрибутива входит веб-браузер и некоторое другое дополнительное ПО. Дистрибутив переведен на несколько языков, включая русский, и имеет полноценный графический интерфейс.

    LParted

    LParted - полнофункциональный LiveCD, предназначенный в первую очередь для работы с разделами жестких дисков (HDD), безвозвратного удаления или восстановления данных и тестирования оборудования. Основан LiveCD на Lubuntu Linux. LParted является функциональным аналогом Parted Magic.

    Сюда бы добавить про SystemRescueCD и прочие

    Ещё немного о сохранении данных

      Для важных данных можно сделать зеркальный раздел на двух дисках. Для этого совсем не обязательно иметь RAID-контроллер и диски одинакового размера - можно, например, собрать зеркало из 80-гигабайтного старого винта и 80-гигабайтного же раздела на новом. Зеркалирование можно реализовать с помощью LVM или программного RAID. Однако, такой способ бесполезен в случае, например, попадания на шину +5В напряжения ~220В или падения метеорита на системный блок компьютера.

      Гики-айтишники, имеющие дома свой сервер, могут расширить идею зеркалирования и использовать DRBD. Тот же RAID-1, но жёсткие диски находятся в разных компьютерах, что повышает надёжность.

      Современное удобное решение - бэкапить данные в «облака», например, с помощью Ubuntu One, Dropbox, http://www.adrive.com/ и других.

      Ни зеркалирование, ни репликация на Ubuntu One не спасут от случайного нажатия Delete, поэтому в любом случае делайте «классические» бэкапы. И в один прекрасный ужасный день все ваши труды и старания будут вознаграждены.

    Для создания образа жесткого диск не обязательно использовать утилиты на подобии Acronis True Image или Norton Ghost, достаточно простой утилиты dd, которая входит в состав большинства Unix-подобных операционных систем (Linux, FreeBSD, Solaris и т.д.) В статье рассмотрен простой способ создания резервной копии образа жесткого диска при помощи dd. Первым делом необходимо подготовиться к резервному копированию. В данной статье введем следующие обозначения:

    • /dev/sda - диск, образ которого необходимо создать;
    • /dev/sdb - диск на который будет записан образ.

    При необходимости нужно подставить собственные значения.

    Подготовка к созданию образа жесткого диска

    Первым делом необходимо загрузиться с любого доступного Live-CD диска, имеющего утилиту dd, и войти в командную строку в качестве суперпользователя. Создаем точку монтирования для проведения резервного копирования.

    mkdir /mnt/backup

    Монтируем жесткий диск на который необходимо сохранить образ.

    Создание образа жесткого диска

    dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

    • if=/dev/sda - копируем весь жесткий диск sda;
    • of=/mnt/backup/sda.img - копируем в /mnt/backup/sda.img;
    • bs=8M - задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт);
    • conv=sync,noerror - указываем dd на необходимость копирования по типу бит-в-бит с игнорированием ошибок чтения.

    Для сокращения размера образа жесткого диска его можно сжать любым архиватором.

    dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img

    Восстановление образа жесткого диска

    Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа.

    dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

    При использовании сжатия параллельно необходимо разархивировать образ.

    gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M

    Миграция системы на другой жесткий диск

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

    dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror

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

    Статистика копирования в dd

    Главный минус в dd - это отсутствие наглядного представления статистики выполнения процедуры копирования. Однако этот минус можно легко обойти. Достаточно подключиться к другому терминалу.

    Определить номер процесса, под которым запущена dd.

    Периодически посылать данному процессу команду kill -USR1 номер_процесса_dd .

    watch -n 5 kill -USR1 номер_процесса_dd

    • watch -n 5 - выполнять команду каждые 5 секунд;
    • kill -USR1 номер_процесса_dd - показать статистику копирования.