Клонирование жёсткого диска на Linux

Содержание

Команда dd Linux

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

Для решения всех этих задач используется утилита dd linux, которая просто выполняет копирование данных из одного места в другое на двоичном уровне. Она может скопировать CD/DVD диск, раздел на диске или даже целый жесткий диск. В этой статье мы рассмотрим что из себя представляет команда dd linux, основные ее опции и параметры, а также как ею пользоваться.

Как работает команда dd?

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты копирования файлов cp только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое. Поскольку в Linux все, в том числе, устройства, считается файлами, вы можете переносить устройства в файлы и наоборот.

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

Команда dd

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

$ dd if= источник_копирования of= место_назначения параметры

С помощью параметра if вам нужно указать источник, откуда будут копироваться блоки, это может быть устройство, например, /dev/sda или файл — disk.img. Дальше, с помощью параметра of необходимо задать устройство или файл назначения. Другие параметры имеют такой же синтаксис, как if и of.

Теперь давайте рассмотрим дополнительные параметры:

  • bs — указывает сколько байт читать и записывать за один раз;
  • cbs — сколько байт нужно записывать за один раз;
  • count — скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
  • conv — применить фильтры к потоку данных;
  • ibs — читать указанное количество байт за раз;
  • obs — записывать указанное количество байт за раз;
  • seek — пропустить указанное количество байт в начале устройства для чтения;
  • skip — пропустить указанное количество байт в начале устройства вывода;
  • status — указывает насколько подробным нужно сделать вывод;
  • iflag, oflag — позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.

Это были все основные опции, которые вам могут понадобиться. Теперь перейдем ближе к практике и рассмотрим несколько примеров как пользоваться утилитой dd linux.

Как пользоваться dd?

Обычные пользователи используют команду dd чаще всего для создания образов дисков DVD или CD. Например, чтобы сохранить образ диска в файл можно использовать такую команду:

sudo dd if=/dev/sr0 of=~/CD.iso bs=2048 conv=noerror

Фильтр noerror позволяет отключить реагирование на ошибки. Дальше, вы можете создать образ жесткого диска или раздела на нем и сохранить этот образ на диск. Только смотрите не сохраните на тот же жесткий диск или раздел, чтобы не вызвать рекурсию:

dd if=/dev/sda of=~/disk.img

В вашей домашней папке будет создан файл с именем disk1.img, который в будущем можно будет развернуть и восстановить испорченную систему. Чтобы записать образ на жесткий диск или раздел достаточно поменять местами адреса устройств:

dd if=~/disk.img of=/dev/sda

Очень важная и полезная опция — это bs. Она позволяет очень сильно влиять на скорость работы утилиты. Этот параметр позволяет установить размер одного блока при передаче данных. Здесь нужно задать цифровое значение с одним из таких модификаторов формата:

Команда dd linux использует именно такую систему, она сложная, но от этого никуда не деться. Ее придется понять и запомнить. Например, 2b — это 1 килобайт, и 1k, это тоже 1 килобайт, 1М — 1 мегабайт. По умолчанию утилита использует размер блока — 512 байт. Например, чтобы ускорить копирование диска можно брать блоки размером по 5 мегабайт. Для этого применяется такая команда:

dd if=/dev/sda of=~/disk.img bs=5M

Следующий параметр — это count. С помощью него можно указать сколько блоков необходимо скопировать. Например, мы можем создать файл размером 512 мегабайт, заполнив его нулями из /dev/zero или случайными цифрами из /dev/random:

sudo dd if=/dev/zero of=file.img bs=1M count=512

Обратите внимание, что этот параметр указывает не размер в мегабайтах, а всего лишь количество блоков. Поэтому, если вы укажите размер блока 1b, то для создания файла размером 1Кб нужно взять только два блока. С помощью этого параметра также можно сделать резервную копию таблицы разделов MBR. Для этого скопируем в файл первые 512 байт жесткого диска:

sudo dd if=/dev/sda of=mbr.img bs=1b count=1

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

Если образ диска слишком большой, можно перенаправить весь вывод нестандартный поток вывода утилиты gzip:

dd if =/dev/sda2 | bzip2 disk.img.bz2

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

dd if=/home/sergiy/test.txt of=/home/sergiy/test1.txt

Как вы знаете, команда dd linux пишет данные на диск непосредственно в двоичном виде, это значит, что записываются нули и единицы. Они переопределяют то, что было раньше размещено на устройстве для записи. Поэтому чтобы стереть диск вы можете просто забить его нулями из /dev/zero.

sudo dd if=/dev/zero of=/dev/sdb

Такое использование dd приводит к тому что весь диск будет полностью стерт.

Выводы

В этой статье мы рассмотрели как пользоваться dd linux, для чего можно применять эту утилиту и насколько она может быть полезной. Это почти незаменимый инструмент системного администратора, поскольку с помощью нее можно делать резервные копии целой системы. И теперь вы знаете как. Если у вас остались вопросы, спрашивайте в комментариях!

Клонирование жёсткого диска на Linux

То, что вы работаете в операционной системе Linux, не означает, что вы не будете время от времени сталкиваться с проблемами. Всегда хорошо иметь план резервного копирования, на случай, если возникнет проблема. Возможно, редкий вирус Linux будет атаковать; возможно, вы будете жертвами мошенников-вымогателей. Может быть, жесткий диск (HDD) выйдет из строя.

Клонируя жесткий диск Linux, вы создаете образ диска, который можно восстановить позже. Но как вы клонируете свой жесткий диск Linux?

Инструменты клонирования дисков Linux

Ваша установка Linux может привести к ошибке; Вы можете обновить жесткий диск до большего объема. Безотносительно проблемы, если у вас есть резервная копия вашего диска, восстановить и запустить все будет относительно просто.

В Linux есть четыре решения для клонирования дисков, которые вы должны рассмотреть:

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

Давайте рассмотрим каждый из четырех основных вариантов клонирования диска в Linux.

1. dd: инструмент для клонирования Native Linux

Возможно, самый мощный инструмент Linux из всех, dd (иногда называемый «разрушитель диска»), может клонировать весь жесткий диск или раздел диска в другой. Но в случае неправильного использования он может удалить содержимое вашего диска.

Таким образом, вы должны использовать с особой осторожностью. Вы найдете dd встроенный в большинство операционных систем Linux. Если нет, установите его из менеджера пакетов. Чтобы клонировать жесткий диск вашего компьютера, используйте команду:

Здесь sdX — это исходный диск, а sdY — место назначения. Числовое значение 64K соответствует команде размера блока, bs. Значение по умолчанию составляет 512 байт, что очень мало, поэтому лучше включить 64K или более 128K в качестве условия. Однако: хотя больший размер блока делает передачу быстрее, меньший размер блока делает передачу более надежной.

Если вы хотите клонировать только раздел вашего диска, используйте

Как вы можете видеть, раздел sda1 (то есть раздел 1 на устройстве sda) будет клонирован в sdb1 (вновь созданный раздел 1 на устройстве sdb), например, вторичный или внешний жесткий диск, подключенный к вашему компьютеру.

Нажмите Enter, чтобы запустить команду. Сколько времени это займет, будет зависеть от размера диска или раздела. Просто убедитесь, что объем назначения достаточно велик для его хранения!

2. Инструмент клонирования разделов Linux, Partimage

Если вы столкнулись с проблемами, пытаясь разобраться с инструкциями с помощью dd, или предпочли бы избежать случайного удаления вашего жесткого диска с опечаткой, partimage также доступен для большинства дистрибутивов и не несет риска «уничтожения диска»!

Читать статью  Оптические патч-корды - маленькие кабели с огромным значением

Однако partimage не поддерживает файловую систему ext4, поэтому избегайте ее использования для клонирования дисков или разделов этого типа. Однако при необходимости его можно использовать для клонирования дисковых форматов Windows (FAT32 или NTFS, хотя это экспериментально), а также для более широко используемой файловой системы Linux ext3 и других более старых альтернатив.

Перед началом убедитесь, что раздел, который вы хотите клонировать, отключен ( с помощью команды umount ). В противном случае вам нужно будет выйти из partimage, прежде чем продолжить процесс. Вы можете выйти в любое время с помощью клавиши F6 .

Для Ubuntu установите:

Запустите из командной строки:

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

Нажмите вправо на клавиши со стрелками, чтобы перейти к следующему разделу, затем Image file to create/use и дайте ему имя (или введите имя файла изображения, которое будет восстановлено).

Выберите Action to be done (убедитесь, что у выбранной опции есть звездочка) и нажмите F5, чтобы продолжить. На следующем экране выберите уровень сжатия и предпочитаемые параметры. Вы также можете выбрать режим разделения изображений и указать, что должно произойти после создания резервной копии.

Нажмите F5, чтобы продолжить, подтвердите данные, затем нажмите OK, чтобы начать процесс. Скорость этого будет зависеть от мощности вашего компьютера.

Если вы ищете быстрое и грязное, но безопасное решение для клонирования дисков для Linux, используйте partimage.

3. Partclone: ​​программное обеспечение для создания разделов и клонирования

Для более зрелой альтернативы dd, которая поддерживает резервное копирование файловой системы ext4, partclone прост в использовании, но опять же требует текстовых команд, а не интерфейса, управляемого клавиатурой или мышью. Установить с помощью:

… Где [fstype] — тип файловой системы раздела, который вы хотите клонировать.

Следующая команда создаст образ диска hda1 (жесткий диск 1, раздел 1) с именем hda1.img:

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

partclone.extfs -r -d -s hda1.img -o /dev/hda1

Более подробную информацию об использовании можно найти на сайте partclone.

4. Клонируйте свой диск Linux с помощью Clonezilla

Для более гибкого решения, почему бы не попробовать Clonezilla? Это популярное решение для аварийного восстановления основано на Partclone и предназначено для ряда задач клонирования дисков. Поддерживаются все ожидаемые файловые системы в Linux, Windows и MacOS (и за ее пределами).

В отличие от dd и Partclone, Clonezilla доступен в виде загрузочного ISO. Вы можете записать это на DVD или USB-накопитель, чтобы полностью клонировать жесткий диск Linux. Clonezilla проста в использовании, с меню на клавиатуре, а не с непонятными командами, так что любой может справиться с этим.

Хотя Clonezilla можно настроить как отдельную утилиту, вы можете предпочесть использовать ее как часть инструмента восстановления Boot CD от Hiren.

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

Клонировать ваш жесткий диск Linux легко

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

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

Резервное копирование системы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для reiserfs это будет ключ -u , для reiser4 -U , для остальных см. man mkfs.тип

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

Теперь можно распаковать содержимое архива на место

(ключ -C задает каталог, в который нужно распаковать файлы. ключ —same-owner сохраняет владельцев файлов при распаковке)

Если вы воспользовались советом выше и создали ФС тех же типов с теми же UUID — можете смело пропустить этот пункт. В противном случае вам придется исправить fstab в соответствии с произведенными изменениями. Откройте этот файл в любимом текстовом редакторе (например, nano) и замените UUID (и тип ФС, если форматировали что-либо в другую ФС) нужных разделов

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

dd — копирование раздела

dd — достаточно универсальная программа, применяемая для всевозможных целей. Здесь мы рассмотрим бэкап раздела диска с ее помощью. Сразу стоит отметить, что данный способ принципиально отличается от других тем, что dd работает не с файловой системой (и файлами на ней), а напрямую с данными, записанными в заданную область жесткого диска.

Данный метод имеет следующие преимущества:

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

Однако, есть целый ряд недостатков:

если файловая система содержит ошибки, после восстановления из такого бэкапа вы получите ФС с теми же ошибками

для распаковки такого бэкапа потребуется раздел объемом не меньше исходного, вне зависимости от количества занятого места на разделе

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

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

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

Нельзя допускать, чтобы данные на разделе изменялись во время копирования, иначе данные в образе будут противоречивы, а сам бэкап — бесполезен. Можно выбать один из следующих вариантов:

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

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

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

(Опция if задает входной файл, в данном случае это /dev/zero — псевдоустройство, генерирующее поток нулевых байтов; опция of — выходной файл, в которые записываются наши данные; bs задает размер блока, т.е. количество информации, считываемой/записываемой за один раз — в данном случае это 4МБ)

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

Читать статью  Обзор внешнего жесткого диска Toshiba Canvio Basics 1тб: не модно, зато дешево, относительно надежно и практично.

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

Все, можно приступать к процессу.

Монтируем тот раздел, куда будем сохранять бэкап

Выполняем операцию, по созданию бэкапа

sdXY — ваш корневой раздел. (в данном примере мы используем немного усложненный вариант — по мере копирования сразу же пропускаем данные через архиватор, в итоге получая уже сжатый образ. вместо gzip вы можете применить lzma или другой архиватор на ваш выбор. также можете поэкспериментировать с размером блока — данная опция влияет на производительность. с опцией conv=noerror процесс не будет прекращен при ошибке чтения/записи)

FIXME

знающие люди, распишите кто-нибудь про оптимальный подбор bs (что конкретно оно дает),

[i|o]bs — размер блока при работе с потоком. ibs — размер блока при чтении, obs — размер блока при записи, bs — устанавливает оба значения сразу. Рекомендуется ставить кратным степени двойки, умноженной на размер кластера файловой системы (обычно это 4096 байт). Для современных жестких дисков 1Мб — это нормально, но значения, бОльшие 64кб, на мой взгляд, не ускоряют операций с диском. — AnrDaemon 2012/03/12 22:40

а заодно про conv=sync (нужен ли он)

НЕТ. Это может привести к повреждению результирующего образа. man dd для разнообразия? Там даже пример есть. На русском, если у вас русские маны стоят. А вот iflag=direct (либо, при записи на блочное устройство — oflag ) при работе с блочными устройствами использовать стОит, чтобы не получить на выходе файл «образа» раз в 5 бОльше исходного раздела. — AnrDaemon 2012/03/12 22:40

Понятно чем больше значение bs , тем бóльшими блоками данных будет оперировать dd и тем быстрее работа. Оптимальным для скорости считается размер блока, равным или чуть меньшим половины объёма кэша жесткого диска. Но нужно еще выяснить есть ли опасность задания слишком больших значений bs . Не известно есть ли возможность при большом параметре bs «зацепить» в образ одного раздела кусок следующего? И что случится при восстановлении раздела из такого образа? Не затронет ли dd соседний раздел?

Если не использовать копирование напрямую с диска (/dev/sdL), а работать с разделами (/dev/sdLN) или файлами (ранее созданными резервными копиями), и не использовать ненужных опций, типа conv=sync — никакой опасности нет. Чтение просто остановится в конце файла(устройства). — AnrDaemon 2012/03/12 22:41

Для слабых компьютеров имеет смысл применить вариант без архивации «на лету»

При желании вы сможете позже сжать образ с помощью любого архиватора на другом компьютере

dd работает весьма «молчаливо», но есть хитрый способ узнать о ходе процесса. В соседней tty-консоли (обычно переключаются по Alt + F1 … Alt + F6 ) или новой вкладке графического терминала выполните

Теперь вернитесь на вкладку/консоль с dd — там вы увидите информацию об объеме скопированных данных и скорости записи.

Если вы хотите видеть вывод данных о работе dd постоянно (через определенные промежутки времени), то во второй консоли следует ввыполнить:

в параметре -n2 — 2 означает выполнять команду каждые две секунды.

Повторите все этапы для отдельных разделов (/boot, /usr и пр.), если таковые имеются.

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

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

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

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

Собственно, можно приступать (дополнительных манипуляций вроде форматирования раздела в данном случае не требуется)

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

(в обоих случаях sdXY — ваш корневой раздел)

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

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

С образом раздела, сделанным с помощью dd можно работать как с настоящим разделом, т.е. записывать на него файлы, удалять или изменять существующие и т.д. Для этого нужно лишь смонтировать образ как loop-устройство

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать статью  Когда стиль имеет значение — обзор внешнего накопителя Seagate Slim Portable Drive

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

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

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

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

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

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

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

squashfs

squashfs — файловая система, создаваемая в виде файла-образа, использующая сжатие.

Она имеет целый ряд преимуществ, таких как:

сохранение атрибутов файлов (прав доступа, владельцев, временных отметок, а с версии 4.1 также и xattr) по умолчанию

Из недостатков можно выделить следующее:

невозможность удаления файлов из образа или изменения существующих (можно только добавлять файлы в образ)

Последний пункт означает, что для начала вам потребуется подобрать дистрибутив, содержащий пакет утилит для squashfs или же имеющий возможность установки из репозитория. В качестве примера можно предложить Parted Maigc, а вообще-то подойдет и liveCD Ubuntu, нужно будет просто установить пакет squashfs-tools

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

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

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

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

Все, можно приступать. Для создания образа используется утилита mksquashfs

(С опцией -no-duplicates программа не будет исключать одинаковые по содержимому файлы. Многие программы используют пустые файлы для различных целей — без данной опции такие файлы не вошли бы в образ как дубликаты. Кроме того, можете поэкспериментировать с опцией -b — она задает объем данных, который будет считан/записан за один раз, до 1 МБ)

В отличие от многих других инструментов mksquashfs покажет индикатор прогресса с указанием процентов. По завершении программа также выведет информацию о количестве файлов/папок/ссылок, коэффициенте сжатия и пр.

Готово! Осталость лишь отмонтировать разделы

Помимо стандартного gzip-сжатия squashfs также поддерживает другие алгоритмы, список которых можно увидеть, выполнив mksquashfs —help . Имейте в виду, что поддержка lzma, lzo, xz может отсутствовать в более старых версиях squashfs-tools (идущих в составе старых LiveCD, например). Кроме того, для монтирования таких образов потребуется относительно свежее ядро с поддержкой squashfs соответствующих алгоритмов сжатия (например, см. CONFIG_SQUASHFS_XZ=y )

Кроме этого, можно создать образ и без сжатия — для этого используйте mksquashfs с опцией -noD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

rsync

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Также существуют различные LiveCD-дистрибутивы, специально предназначенные для резервного копирования данных. вот наиболее популярные из них:

CLonezilla

Clonezilla — универсальное средство для бэкапа разделов или целых дисков с гибкой настройкой процесса. Данный дистрибутив поддерживает множество файловых систем, работает с LVM2 и RAID-массивами (только аппаратные) и имеет локализацию для многих языков, включая русский. Clonezilla имеет понятный «пошаговый» псевдографический интерфейс, а решить возникающие вопросы поможет в изобилии доступная документация

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

Parted Magic

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

LParted

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

FIXME

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

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

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

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

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

Ссылки

FIXME

побольше ссылок сюда! на статьи всякие разные и прочия

для суперпользователя этот режим активирован по умолчанию, так что его использование, вообще-то, не обязательно

© 2018 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Источник https://losst.pro/komanda-dd-linux

Источник https://ip-calculator.ru/blog/ask/klonirovanie-zhyostkogo-diska-na-linux/

Источник https://help.ubuntu.ru/wiki/backup

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: