стиснення резервної копії DD на льоту


23

Можливо, це буде звучати як німе питання, але те, як я намагаюся це зробити, не працює.

Я на livecd, диск відключений тощо.

Коли я роблю резервне копіювання таким чином

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... як правило, це буде працювати, але у мене не вистачає місця на зовнішній hd, який я копіюю (він ТОЛЬКО вписується в нього). Тому я хотів стиснути таким чином

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... але мені було дозволено відмовити. Я не розумію.


2
Не варто. Це не резервне копіювання. Перевірте команди "дамп" та "відновити".
Джуліано

Або дьоготь або cpio ....
chris

1
Джуліано, що ти маєш на увазі під "це не резервне копіювання"?
Філ

5
Це не резервне копіювання, оскільки резервні копії є серйозними, добре структурованими та використовують належні інструменти, призначені для створення резервних копій. Ви просто робите копію необроблених даних розділу. Щоб відновити ці дані, вам знадобиться інший розділ з тією ж геометрією, що не гарантується. Крім того, якщо ви пошкодите один блок свого архіву (суперблок, таблиці inode, кореневий каталог тощо), ви ризикуєте втратити всі свої дані. При правильній резервній копії цього не сталося.
Джуліано

7
"Для відновлення цих даних вам знадобиться інший розділ з тією ж геометрією, що не гарантується" Навіщо йому це потрібно, чи не може він монтувати зображення розділу на пристрій петлі?
Кайл Брандт

Відповіді:


41

Чи маєте ви доступ до файлу sda2-backup ... gz? Судо працює тільки з командою після неї, і не застосовується до перенаправлення. Якщо ви хочете, щоб воно застосувалося до перенаправлення, запустіть оболонку як корінь, щоб і всі дочірні процеси були кореневими:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Крім того, ви можете встановити диск за допомогою параметрів монтування uid / gid (припустимо, ext3), щоб у вас є дозволи на запис, як би ви не були користувачем. Або використовуйте root, щоб створити папку в / media / disk, на яку ви маєте дозволи.

Інша інформація, яка може вам допомогти:

  • Розмір блоку має значення лише для швидкості здебільшого. За замовчуванням - 512 байт, які ви хочете зберегти для MBR та дискети. Більший розмір до точки повинен прискорити операції, вважайте це аналогічним буфері. Ось посилання на когось, хто зробив деякі показники швидкості з різними розмірами блоків. Але вам слід зробити власне тестування, оскільки на продуктивність впливає багато факторів. Подивіться також на іншу відповідь від andreas
  • Якщо ви хочете досягти цього через мережу за допомогою ssh та netcat, щоб місця не було великим, перегляньте це питання за замовчуванням на сервері .
  • Вам дійсно потрібне зображення розділу, можливо, будуть кращі стратегії резервного копіювання?
  • dd - це дуже небезпечна команда, використовуйте її ofзамість, ifі ви в кінцевому підсумку перезапишете те, що намагаєтесь зробити резервну копію !! Зауважте, як клавіші oі iзнаходяться поруч? Тому будьте дуже-дуже обережні.

я спробую це. як я також роблю це bs = 64k? (а чи треба мені?)
Філ

Bs = 64k лише переносить швидше, оскільки dd буде читати блоки по 64k кожен замість розміру блоку за замовчуванням (не пам'ятаю).
chris

Що сказав Кріс, і якщо ви хочете включити його, поставте його після dd та перед символом труби (|), оскільки це аргумент до dd.
Кайл Брандт

1
Я також періодично використовую "sudo tee $ file> / dev / null" у конвеєрі, щоб дозволити записувати у файл, до якого мій обліковий запис користувача також не має доступу.
Рік Шнайдер

6

У першому випадку DD працює як root.

У другому випадку DD працює як root, але gzip працює як ви.

Змініть дозволи на / media / disk, надайте собі кореневу оболонку або також запустіть gzip як root.


3

Крім того, ви можете замінити gzip bzip2 --bestна набагато кращу компресію:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2

3
Ціною багато часу. Докладнішу інформацію див. У розділі changelog.complete.org/archives/… "Як думати про стиснення".
Білл Вайс

@BillWeiss: Дякую за ваш коментар, дуже цікаво читайте!
andreas

стиснення: lzma> bzip2> gzip .. швидкість: gzip> bzip2> lzma. Якщо ви не публікуєте зображення диска в Інтернеті, часу, потужності процесора та пам'яті ви витрачаєте на кращу компресію.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.