Резервне копіювання системи. Створення завантажувальної флешки для інсталяції Windows з використанням програми Rufus Що означає dd образ

💖 Подобається?Поділися з друзями посиланням

Створимо за допомогою утиліти 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/op 512 bytes Disklabel type: dos Disk ID: 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:дозволяє підключати фільтри, що застосовуються до потоку даних. Фільтр "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М"

Команда ddпризначена для залучення однойменної утиліти, призначеної для низькорівневого копіювання та перетворення даних. Її назва розшифровується як data duplicator або дуплікатор даних. Ця утиліта використовується головним чином для запису образів інсталяційних дисків дистрибутивів Linux на флеш-накопичувачі та створення образів оптичних носіїв, проте коло її функцій не обмежується перерахованими операціями. Наприклад, ddможе використовуватися для простого копіюванняфайлів або зміни регістру символів текстових рядків. Взагалі, розглянута утиліта є певною мірою унікальною, адже вона передбачає використання власного форматупередачі параметрів.

Стандартний синтаксис команди виглядає так:

$dd if=<имя исходного файла>of=<имя целевого файла>[параметри]

Неважко помітити, що для передачі параметрів утиліті використовується формат запису <имя параметра>=<значение параметра> . Утиліта може читати вихідні дані зі стандартного потоку введення та виводити результуючі дані за допомогою стандартного потоку виводу у разі відмови від використання параметрів ifі of, але в переважній більшості випадків ці параметри є необхідними для вказівки імен файлів з відповідними даними. Утиліта читає та записує дані блоками, причому розмір блоку може змінюватись за допомогою параметра bs(за замовчуванням використовуються блоки розміром 512 Кб). Існують окремі параметри для завдання розмірів блоків, що читаються і записуються, а саме, ibsі obs. Кількість блоків, що читаються, може обмежуватися за допомогою параметра count. Для пропуску заданої кількості блоків вихідного файлу можна використовувати параметр skipцільового файлу - параметр seek. Для вказівки прапорів читання та запису через кому може використовуватися параметр iflag

  • append- Активація режиму дописування даних у цільовий файл.
  • direct- Режим обробки даних в обхід кешу файлових систем (підвищує швидкість).
  • dsync- режим запису даних із синхронізацією (підвищує надійність).
  • sync- режим запису даних та метаданих із синхронізацією (підвищує надійність).
  • fullblock- Читання лише повних блоків.
  • nonblock- активація режиму неблокованого введення/виводу (підвищує швидкість).
  • noatime- Вимкнення механізму оновлення міток часу елементів файлової системи (підвищує швидкість).
  • nofollow- Відмова від переходу за символьними посиланнями.

Нарешті, для вказівки прапорів перетворення через кому може використовуватися параметр conv. Найчастіше використовуваними прапорами є:

  • lcase- Переведення символів рядка в кодуванні ASCII в нижній регістр.
  • ucase- Переведення символів рядка в кодуванні ASCII у верхній регістр.
  • nocreat- Виведення повідомлення про помилку у разі відсутності цільового файлу.
  • excl- Виведення повідомлення про помилку у разі існування цільового файлу.
  • notrunc- Відмова від урізання цільового файлу.
  • swab- Зміна місць кожних двох байтів з вихідного файлу.
  • noerror- Продовження роботи навіть у разі виникнення помилок.
  • fdatasync- активація режиму запису даних до цільового файлу перед завершенням роботи утиліти.
  • fsync- активація режиму запису даних та метаданих у цільовий файл перед завершенням роботи утиліти.

Приклади використання

Створення резервної копії даних дискового накопичувача

Припустимо, ми використовуємо жорсткий диск, представлений файлом пристрою /dev/sda, і нам потрібно створити посекторну резервну копію всіх розміщених на ньому даних, зберігши її у файлі в розділі знімного диска з інтерфейсом USB, представленому файлом пристрою /dev/sdb1та змонтованим у директорію /mnt/sdb1. Зазвичай, такі файли резервних копій називаються дампами або образами дисків. Наш файл образу диска носитиме ім'я backup.img. Це команда, за допомогою якої її можна створити:

# dd if=/dev/sda of=/mnt/sdb1/backup.img

У цій команді за допомогою параметра ifзадається шлях до вихідного файлу, а за допомогою параметра of- До цільового.

Відновлення даних із резервної копії

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

# dd if=/mnt/sdb1/backup1.img of=/dev/sda

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

Клонування жорсткого диска

Перед клонуванням жорсткого диска ви повинні переконатися, що у вас є жорсткий диск того ж об'єму, що й вихідний. Ця ж операція може виконуватися і у разі флеш-накопичувачів з інтерфейсом USB аналогічних обсягів. Припустимо, що вихідний флеш-накопичувач представлений файлом пристрою /dev/sdb, а цільовий - файлом пристрою /dev/sdc. У цьому випадку ви можете клонувати вихідний накопичувач за допомогою наступної команди:

# dd if=/dev/sdb of=/dev/sdc

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

Передача файлу образу диска на інший комп'ютер

Для передачі файлу образу диска через мережу на інший комп'ютер з ім'ям targetможе використовуватися наступна команда:

# dd if = / dev / sdb | ssh root@target "(cat >backup.img)"

Стиснення файлу образу диска

Для того, щоб резервна копія розділу диска займала менше місця, ви можете її стиснути за допомогою компресора, такого, як bzip2 :

# dd if = / dev / sdb | bzip2 backup.img.bz2

Створення оптичного диска формату ISO

Для створення образу оптичного диска CD, DVD або BD досить побічно прочитати його вміст і зберегти цей вміст у файлі:

# dd if=/dev/sr0 of=image.iso bs=2048

Збереження файлу з пошкодженого носія або створення такого носія.

Якщо ваш улюблений фільм або музичний трек більше не читається через пошкодження носія, ви можете спробувати його скопіювати за допомогою утиліти ddігноруючи пошкоджені блоки:

# dd if=movie.avi of=/home/alex/movie.avi conv=noerror,sync

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

# dd if=/dev/sdb of=/home/alex/movie.iso bs=2048 conv=noerror,sync

Запис образа диска на флеш-накопичувач з інтерфейсом USB

Для установки дистрибутива Linuxз флеш-накопичувача з інтерфейсом USB необхідно записати на цей флеш-накопичувач образ інсталяційного диска формату ISO. Для цієї мети може використовуватися аналогічна команда:

# dd if=/home/alex/Fedora-Workstation-Live-x86_64-26_Alpha-1.7.iso of=/dev/sdc

Важливо пам'ятати, що навіть у разі наявності на флеш-накопичувачі розділів слід вказувати не шлях до файлу пристрою одного з розділів, а шлях до файлу пристрою накопичувача, в нашому випадку це /dev/sdc.

Аналіз вмісту жорсткого диска

Утиліта ddє чудовим інструментом для дослідження файлових систем. Для аналізу вмісту жорсткого диска з виведенням даних з окремих блоків, у нашому випадку, блоку 1001 на розділі, представленому файлом пристрою /dev/sdc1, достатньо використати наступну команду:

# dd if=/dev/sdc1 count=1 skip=1000

Для того, щоб побачити перші 40 байт вашого жорсткого диска у шістнадцятковому поданні слід використовувати команду:

# dd if = / dev / sda bs = 1 count = 40 | hexdump -C

У цьому випадку за допомогою параметра bsзадається розмір блоку диска.

Тестування продуктивності дискових накопичувачів

Для тестування продуктивності дискового накопичувача, представленого, наприклад, файлом пристрою /dev/sdaв умовах читання блоків різних розмірів може використовуватися аналогічна команда:


1000000+0 records in
1000000+0 records out

# dd if=/dev/sda of=/dev/null bs=4096 count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 29.8747 s, 137 MB/s

Завдяки механізму кешування файлових систем, ви можете зіткнутися з містичним прискоренням операції читання, якому не варто дивуватися:

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 4.25186 s, 120 MB/s

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.417317 s, 1.2 GB/s

Для отримання коректних результатів тестів рекомендується взагалі обходити механізм кешування файлових систем за допомогою режиму введення/виводу без кешування:

# dd if=/dev/sda of=/dev/null bs=512 count=100000 iflag=direct
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 5.01053 s, 10.2 MB/s

Копіювання файлів

Так, утиліта ddможе використовуватися навіть для копіювання файлів. Звичайно ж, для цієї мети краще використовувати спеціально призначену для цього утиліту, а саме, cp. У будь-якому випадку, ви можете скопіювати файл за допомогою аналогічної команди:

$dd if=/home/alex/test.txt /home/alex/test_copy.txt

Як відомо, «Користувачі комп'ютера діляться на тих, хто робить бекапи, і тих, хто їх робитиме». У цій статті ми розглянемо різні способирезервного копіювання (бекапу) всієї системи та, відповідно, відновлення з резервної копії.

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

ddпроста утиліта, яка входить до складу більшості Unix-подібних операційних систем- Linux, FreeBSD, Solaris і т.д.
Її призначення - читання даних з одного пристрою або файлу та запис в інший.

ddможна ефективно використовувати для створення образу жорсткого диска, при цьому обійшовшись без комерційних утиліт на кшталт Acronis True Image або Norton Ghost.

Припустимо, що у нас є два диски:

  • /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 number_process_dd

  • watch -n 5 - виконувати команду кожні 5 секунд;
  • kill -USR1 number_process_dd — показати статистику копіювання.

Мінуси використання dd для створення образів диска

У всього є плюси та мінуси. dd є безкоштовним і дуже гнучким інструментом, проте за його допомогою можна зробити лише повне копіювання тома. Спеціальні програмивміють копіювати лише дані, які зберігаються на диску.

Таким чином, обсяг образу диска, створений за допомогою dd дорівнюватиме обсягу самого диска - незалежно, скільки на диску даних.



Розповісти друзям