LINUX.ORG.RU

Снова о бекапировании с помощью dd

 ,


0

5

Сорри за избитые вопросы, но ннада :-)

Разочаровался в бекапирующих утилитах, и решил остановится на православном dd
Освоил пока только бекапирование, т.е. «туда».
Восстановлением, т.е. «обратно, еще не занимался, потому что уже и по бекапированию возникли некоторые вопросы.

Например, есть такая структура диска:

/device/sda1	350M	NTFS
/device/sda2	 16G	NTFS
/device/sda3	300M	Linux
/device/sda4	 39G	Extended
/device/sda5	 15G	Linux
/device/sda6	  4G	Linux swap

Загружаюсь с LiveCD и выполняю бекап на другой комп такой командой -
dd status=progress if=/dev/sda conv=sync,noerror bs=64k | gzip -c | ssh chukcha@192.168.1.100 "dd of=sda.img.gzip bs=64k"
Бекап прекрасно выполняется и заодно сжимает на лету эти разделы примерно в 5 раз (!)
(кстати, gzip увы, однопоточный, так что лучше 7zip)

Это замечательно, но смущает связка conv=sync,noerror - на кой ляд она здесь надо?

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

Так вот, для копирования без игнора нужно исключить noerror - только вот как?
Исключить нужно только noerror, или всю связку conv=sync,noerror?

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

Дополняет каждый входной блок значениями NUL до размера ibs; при использовании с block или unblock, используется блок с пробелами, а не NUL.

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

★★★

Ответ на: комментарий от LongLiveUbuntu

Перечитал, ситуация не изменилась. ТС написал лишнего и спрашивает нас, зачем он это сделал.

t184256 ★★★★★ ()
Ответ на: комментарий от thesis

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

Всё что я хотел сказать первым комментарием, мне пришлось развернуть тебе во втором. Хотя ты его, кажется, не прочёл.

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

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

sin_a ★★★★★ ()
Ответ на: комментарий от sin_a

Мне не надо ничего «разворачивать». Пиши последовательность действий по восстановлению случайно удаленного каталога при наличии дампа, снятого методом ТСа. Или лучше сразу признавай, что комментарий с «man mount» был глупым. Не надо прятать глупость за многословием, это тоже глупо.

thesis ★★★★★ ()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Если наш спрашивающий выбрал путь боли при восстановлении то он загуглит.

В том, что ты способен восстановить данные из такой копии я не сомневаюсь.

sin_a ★★★★★ ()
Ответ на: комментарий от sin_a

Я-то способен. И ты, я думаю, тоже способен. И понимаешь, что man mount - не самая мрачная часть процесса (почему я и считаю тот камент глупым, ага).

thesis ★★★★★ ()
Ответ на: комментарий от chukcha

ТОЛЬКО ТУПОЕ КОПИРОВАНИЕ БЛОКОВ!

правильно, не задокументированные ФС метаданные тоже нужно копировать, а то мало чего там лежит для ФСБ!

я бекапил для экспериментов и восстанавливал венду через redo rescue, все отлично работает, правда для бекапа оно желает отдельный физический диск (вот Rescuezilla может положить рядом на раздел с линуксом), оба gui к partclone.

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 2)
Ответ на: комментарий от thesis

Не вижу ничего мрачного. Сотрёт пару сериалов и распакует образ.

Но тут ещё то, что твой вопрос (и последующее обсуждение) может не иметь смысла. Возможно ему никогда не понадобится восстанавливать отдельные файлы. Что мы можем знать о его задаче?

Но если, то задача решаема, да.

sin_a ★★★★★ ()
Ответ на: комментарий от sin_a

Да какая бы ни была задача, dd годится для дампа/раскатывания прошивок и не-файловых данных. То, что я вижу в топике, не похоже ни на то, ни на другое. Что я пропустил?

Ну е-мое, ну серьезно, ТС же весь диск тащит целиком, готов поспорить что даже без размонтирования разделов. Какая здесь задача, засрать удаленное хранилище некондиционными архивами и спать необоснованно спокойно?)

thesis ★★★★★ ()
Ответ на: комментарий от greenman

как тогда правильно делать образ раздела и/или диска?

dd if=source of=destination bs=64M status=progress

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

i-rinat ★★★★★ ()
Ответ на: комментарий от SergeySVold

© 2003–2021 Acronis International GmbH, Rheinweg 9, 8200 Schaffhausen, Switzerland. All rights reserved.

Для белых людей все те же.

ololoid ★★★★ ()
Ответ на: комментарий от mky

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

goingUp ★★★★★ ()
Ответ на: комментарий от goingUp

что в этом случае будет, если появится битый сектор?

Если битый сектор приведёт к завершению read() с ошибкой, то dd завершит работу практически сразу. Результат копирования будет неполный.

i-rinat ★★★★★ ()
Ответ на: комментарий от goingUp

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

Перестанут, конечно же. Но ведь у тебя в скриптах бекапа будет обработка ошибок, которая вышлет уведомление. Ведь будет, да?

Я понимаю, что личные предпочтения у всех разные. Но очень сильно сомневаюсь, что ты предпочтёшь тихонько пропущенные ошибки копирования громкому сообщению о проблемах.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Но очень сильно сомневаюсь, что ты предпочтёшь тихонько пропущенные ошибки копирования громкому сообщению о проблемах.

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

goingUp ★★★★★ ()
Ответ на: комментарий от i-rinat

Если подобное произойдёт, то в выходной файл из-за conv=sync уйдёт полный блок, а вот во входном файле смещение будет меньше блока.

А можно сделать так, чтобы dd при неполном чтении блока останавливался на некий таймаут и потом пытался прочесть блок повторно и так несколько попыток, а вот при нехватке байт в последнем блоке добивл хвост нулями?

В принципе логично иметь две опции reread_error=timeout,attempts_number и complectail.

torvn77 ★★★★★ ()
Ответ на: комментарий от chukcha

Тогда я получил хороший урок, и теперь убежден:

Имхо dd не должна быть сложной программой и ты мог бы её под себя переписать, а если бы не просто под себя переписал, а сделал это правильно с сохранением совместимости то тогда даже мог бы отправить свою наработку обратно в проект.

torvn77 ★★★★★ ()
Ответ на: комментарий от thesis

Есть пожатый 250Гб->50Гб дамп. Дальше?

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

Но в случае ТС этот фокус точно не пройдёт так как он клонирует диск целиком, а не отдельными разделами.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
/device/sda1	350M	NTFS
/device/sda2	 16G	NTFS
/device/sda3	300M	Linux
/device/sda4	 39G	Extended
/device/sda5	 15G	Linux
/device/sda6	  4G	Linux swap

if=/dev/sda

Может тебе лучше бекапить диск отдельными разделами, ты ведь при клонировании через sda не сможешь вытащить данные без полной записи образа на тот или иной винчестер. А вот при бекапах пораздельно доступ к бекапу очень легко получить через losetup

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от goingUp

особенно если диск подыхает

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

Это можно сделать ddrescue, а вот можно ли dd - не знаю.

Само наличие ddrescue уже хорошо говорит о том, насколько dd не годится для спасения данных. Ddrescue генерирует и сохраняет карту повреждённых областей, умеет подбираться к нечитаемым секторам, сбривая кусочки с больших блоков, умеет повторять, умеет продолжать. С dd при чтении сбойного накопителя с conv=sync,noerror ты просто увидишь сообщение об ошибке, которое только приблизительно покажет, где ошибка была. И ещё не факт, что увидишь.

i-rinat ★★★★★ ()
Ответ на: комментарий от torvn77

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

Установи gddrescue, например.

i-rinat ★★★★★ ()

Ну что, неугомонная братия, наломали копиев? :-)
Не ожидал, что мой скромный вопрос по столь избитой теме вызовет столь бурную дискуссию.
Ну это и хорошо, авось кому-то еще пригодится.

Итак, если вернутся к моим баранам, то, при условии, что мы точно знаем, что диск целый, без битых секторов,
то судя по вашим отзывам можно спокойно юзать эту простенькую команду, без всяких там conv= и при этом быть уверенным,
что получится правильный бекап -

dd status=progress if=/dev/sda bs=64k | gzip -c | ssh chukcha@192.168.1.100 "dd of=sda.img.gzip bs=64k"

Так ли это?

Если «да», то перейду к обсуждению следующих своих заждавшихся баранов по этой теме :-)

chukcha ★★★ ()
Ответ на: комментарий от i-rinat

Был ещё пакет ddrescue с dd_rescue.

В арче такой есть.

В целом понял, спасибо.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

1) Может тебе лучше бекапить диск отдельными разделами, ты ведь при клонировании через sda не сможешь вытащить данные без полной записи образа на тот или иной винчестер. А вот при бекапах пораздельно доступ к бекапу очень легко получить через losetup

А, вы об этом! Так это следующие мои «бараны», т.е вопросы, просто вы меня с ними несколько опередили.
Просто я рассматриваю 2 варианта -
- бекап диска целиком, не глядя что там есть (иногда и такое бывает нужно)
- бекап разделов по отдельности, но об этом позвольте позже, иначе запутаемся.

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

А это еще здесь зачем? Ведь уже не раз пытаюсь высказать мысль, что диск - совершенно ЦЕЛЫЙ, и никаких неполных блоков с ним не будет, и соответственно тайм-ауты не нужны.

chukcha ★★★ ()
Ответ на: комментарий от torvn77

losetup давно умеет просить ядро прочитать таблицу разделов в /dev/loop, если в ядре включена поддержка, то будут разделы (/dev/loop0p1 и т.д., ЕМНИП). Так что это не проблема.

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

Про squashfs в топике уже написано.

mky ★★★★★ ()
Ответ на: комментарий от torvn77

Ты лучше посмотри что там i-rinat мне написал а ответ.

Вы об этом? -

Установи gddrescue, например.

Хорошо, прочел.

gddrescue: средство восстановления данных с поврежденных носителей

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

chukcha ★★★ ()
Ответ на: комментарий от t184256

Схроны, как синоним, к бекапированию не подходят. А «создание запасных (или резервных) копий» — вполне. Вообще за превращение русского языка в брайтонский суржик давно пора наказывать лишением qr-кода.

Mischutka ★★ ()
Последнее исправление: Mischutka (всего исправлений: 1)
Ответ на: комментарий от t184256

+

Тоже совсем не понимаю, как такую интуитивно понятную вещь, как шифрование, до сих пор умудряются игнорить. «Комп (любое вычислительное устройство) выключено - значит к данным доступа нет.» По-моему, это интуитивно и должно-таки быть дефолтом. А то начинается: «ну я же ввожу пароль когда логинюсь, значит, думал, что данные защищены»

zendrz ()
Последнее исправление: zendrz (всего исправлений: 2)

Только не юзай gzip формат и компрессор. А то так и не узнаешь, сколько терабайт надо для распаковки твоего «100GB» архива, без собственно самой распаковки (см BUGS в ‘man gzip’).

советую: lzop, bzip2 с минимальным сжатием (для него есть многопоточный компрессор и декомпрессор точно, кстати. выручил меня пару раз. уровень сжатия тоже надо подобрать, что бы по скорости было ок), lzip

zendrz ()
Последнее исправление: zendrz (всего исправлений: 4)
Ответ на: комментарий от zendrz

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

у меня тут один васян тоже есть, шифрованно все вплоть до свопа, в тырнет ходит lynx’ом через tor с отключенными джава-скриптами, куками и что-то там еще «а вдрух придут плохие люди и чтото сделают ??».
причем единственное что у него можно украсть - это сборку порнушки, на вопрос «что они тебе могут сделать??» обрисовывает картины мирового господства, црушно-кгбшного матриархата, тотально-анального слежения и т.д.
обычный серый человек…со съехавшей кукухой… оно такое нужно ??

умейте «разделять и властвовать» а не «винегретить и мозго-бствовать».

pfg ★★★★★ ()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от pfg

умейте «разделять и властвовать»

Уверены, что все без ошибок разделено? Например в этом треде вы раскрыли военную тайну РФ )

МШ (канал urbanturizm) за что-то такое посадили.

goingUp ★★★★★ ()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от goingUp

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

pfg ★★★★★ ()
Ответ на: комментарий от Mischutka

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

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

Mischutka ★★ ()
Ответ на: комментарий от zendrz

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

Итак, если вернутся к моим баранам, то, при условии, что мы точно знаем, что диск целый, без битых секторов,
то судя по вашим отзывам можно спокойно юзать эту простенькую команду, без всяких там conv= и при этом быть уверенным,
что получится правильный бекап -

dd status=progress if=/dev/sda bs=64k | gzip -c | ssh chukcha@192.168.1.100 "dd of=sda.img.gzip bs=64k"

Так ли это?

Если «да», то перейду к обсуждению следующих своих заждавшихся баранов по этой теме :-)

chukcha ★★★ ()

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

Если вы работаете dd, чтобы получить быкап, по-видимому, вам нужна копия части пространства жёсткого диска на уровне физических секторов (и их содержимого - неважно с чем - полезными данными или мусором от предыдущих записей и удалённых файлов). Заниматься dd действительно имеет для вас смысл?

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Совершенно верно - только dd и ничего другое.

Со всякой другой всячиной работал, и теперь хочу сосредоточиться исключиться на dd.
Так что плиз, давайте не отвлекаться на другие варианты и ответьте на заданный выше вопрос.

chukcha ★★★ ()
Ответ на: комментарий от chukcha

диск целый, без битых секторов, то судя по вашим отзывам можно спокойно юзать эту простенькую команду, без всяких там conv=

Без дополнительных параметров dd мало отличается от cat. Первый dd можно заменить на pv, второй на cat, а gzip -c на zstd --compress --threads=$(nproc)

No ()

бекапировании с помощью dd

Это какая-то невероятная и фантастическая идея, особенно в 21 году. Тред не читал.

i586 ★★ ()
Ответ на: комментарий от zendrz

тебе уже ответили, не нужен sync,noerror

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

dd мало отличается от cat. Первый dd можно заменить на pv, второй на cat, а gzip -c на zstd --compress --threads=$(nproc)

А... зачем? Это чем-то лучше?

Тред не читал.

Так может самое время почитать? :-)

chukcha ★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей