Резервне копіювання системи. Створення образу жорсткого диска за допомогою утиліти dd у Unix Утиліта dd використовувана фбр для копіювання файлів

Будьте уважні, оскільки при помилці в назву флешки в команді 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:дозволяє підключати фільтри, що застосовуються до потоку даних. Фільтр "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, no error 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, no error 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, тому в будь-якому випадку робіть «класичні» бекапи. І одного чудового жахливого дня всі ваші праці та старання будуть винагороджені.

Отже, припустимо у вас завантажений ISO-файл із чином дистрибутива та підготовлена ​​флешка.

Термінальна команда для запису iso-образу дистрибутива виглядає так:

sudo dd if=шлях к.iso of=/dev/sdb

Де замість шлях к.isoпотрібно вказати шлях до iso-файлу з вашої папки Завантаження.
sdbв кінці команди, це флешка, на яку буде записаний образ. Щоб визначити вашу флешку, виконайте у терміналі:



І якщо у вас флешка визначилася інакше, змініть у команді.

Щоб правильно ввести в команду шлях до файлу, відкрийте папку з файлом, відкрийте поруч термінал і перетягніть файл:


У терміналі з'явиться шлях до файлу і файл.iso. Скопіюйте його без лапок і вставте в команду, а в терміналі натисніть клавіші Ctrl+Cдля скидання та відображення нового рядка запрошення.

Найпростіше створювати команду в текстовому редакторі.
У мене вийшла наступна команда:


Тепер вставте флешку в порт комп'ютера, скопіюйте отриману команду з текстового редактора, введіть термінал і виконайте (натисніть Enter):


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


От і все. Ваша флешка стала завантажувальною і ви можете тепер робити установку дистрибутива на будь-якому комп'ютері.

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

Для вирішення всіх цих завдань використовується утиліта dd linux, яка просто копіює дані з одного місця в інше на двійковому рівні. Вона може скопіювати CD/DVD диск, розділ на диск або навіть цілий жорсткий диск. У цій статті ми розглянемо що являє собою команда dd linux, основні її опції та параметри, а також як нею користуватися.

Спочатку потрібно зрозуміти, як працює команда dd і що вона робить. Фактично це аналог утиліти тільки для блокових даних. Утиліта просто переносить по одному блоку даних зазначеного розміру з одного місця до іншого. Оскільки в 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. Вона дозволяє дуже впливати на швидкість роботи утиліти. Цей параметр дозволяє встановити розмір одного блоку під час передачі даних. Тут потрібно встановити цифрове значення з одним з таких модифікаторів формату:

  • з- Один символ;
  • b- 512 байт;
  • kB- 1000 байт;
  • K- 1024 байт;
  • MB- 1000 кілобайт;
  • M- 1024 кілобайт;
  • GB- 1000 мегабайт;
  • G– 1024 мегабайт.

Команда 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, для чого можна застосовувати цю утиліту і наскільки вона може бути корисною. Це майже незамінний інструмент системного адміністратора, оскільки з її допомогою можна робити резервні копії цілої системи. І тепер ви знаєте як. Якщо у вас залишилися питання, запитуйте у коментарях!

    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можна виконувати завантаження за допомогою отриманої завантажувальної флешки.

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