LINUX.ORG.RU

dd пишет сломаный образ

 , ,


0

1

Привет. Сегодня не вышло сделать бэкап системы Armbian.

Система сидит на SD карте объёмом 16GB. Первые 4M как и положено под таблицей. Далее размечено на карте только 3GB ext4. И они полностью отданы системе. Там же внутри и /home. Остальное пространство не размечено. Это было сделано намерено, чтобы сделать backup настроенной системы. Всё таки карта SD как никак. Не известно когда сдохнет. Сама система работает прекрасно. Никаких сбоев или вылетов. Далее…

Извлёк карту потащил копироваться в другой комп.

Пишу:

sudo dd if=/dev/sdb of=/blabla/obraz.img bs=1M count=3500 status=progress ; sync

И вроде образ записан. Тааак… Пишу его на другую карту SD тоже 16GB, для проверки:

sudo dd if=/blabla/obraz.img of=/dev/sdb bs=1M status=progress ; sync

И вроде всё без ошибок записалось…

Но вот только когда впихиваю её в слот и пытаюсь загрузиться происходит хер.

Захожу позже на Большом компе в эту карту, в каталоги и понимаю, что по пути /home мне пишут про ошибку какую-то, что нужно какое то пространство очистить. Ну и загрузки с неё нет. Когда же вставляю карту исходник то на ней гуляю по /home спокойно.

Ничего не понимаю потому, что раньше проделывал такую процедуру с другими HDD и SD, и ничего подобного не возникало. Всегда этот процесс был простым и рабочим.

Что карта на которую копирую битая быть не может, так как пробовал разные две.

Что происходит? Кто-нить знает мож?

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

Дык зачем всю? Нужна только размеченная область с небольшим запасом. Кроме того я так делал всегда и всё работало железобетонно. Остальная область не размечена вообще.

uriukti ()

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

uriukti ()

Причина найдена. Проблема решена. dd копирует грубо и с ошибками. Это и есть причина ошибки. С теми же параметрами dcfldd всё сделала правильно. Жаль, что ответы как всегда ищу сам и трачу адову кучу времени. Спасибо друзья.

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

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

а на счёт count…а почему?

мне ведь нужно хранить образ именно этого куска данных. дело то в чём…карты могут быть начиная от 4GB. в случае замены. а если хранить образ 16GB из которых используется только 3 с копейками…то это и не логично, и сразу вылетают потенциальные карты 4GB, 8GB в утиль. Но. Может я просто не знаю как правильно задать размер. пишите как правильно, если знаете, попробую, напишу о результате. спасибо за ответ.

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

sudo dd if=/dev/sdb of=/blabla/obraz.img bs=1M count=3500 status=progress ; sync

карты могут быть начиная от 4GB

Может я просто не знаю как правильно задать размер

Зачем тогда dd? В данном случае лучше освоить sudo blkid, выяснить, куда эти UUID пхаются и пользовать tar:

sudo mount /dev/sdb /mnt/sdb
cd /mnt/sdb
tar -czpvf /blabla/obraz.tar.gz .
anonymous ()
Ответ на: комментарий от uriukti

«А был-ли мальчик…»

Может нужно поискать в БАШе.

sudo dd if=/dev/sdb of=/blabla/obraz.img bs=1M count=3500 status=progress ; sync

Я так понимаю. Две команды: судо с параметром и синк. Т.е. синк без судо, а будет-ли он вообще выполнен. Второе. Разделитель точка с запятой означает, что синк будет выполнен после начала предыдущей коменды, но не гарантирует, что дождется ее окончания. Надежнее будет: «dd… && sync». Интересно услышать мнение более компетентного в БАШе.

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

))) не поверите anonimus. этим путём я и пошёл. правда ваш варинт конечно более элегантен.

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

сначала скопировал побайтно mbr

sudo dd if=/dev/sd? of=/blabla/mbr bs=1 count=3145728

именно такой размер. таким он указан в cfdisk. ниже объясню почему не 512

далее

sudo blkid

запоминаю UUID источника например /dev/sdb1

90fvhтипа-UUID2cgh1237h4871

пишу mbr на клона

sudo dd if==/blabla/mbr of=/dev/sdc bs=1

Появившийся раздел на нём /dev/sdc1 форматирую в ту же файловую систему допустим ext4

затем меняю ему UUID

sudo tune2fs /dev/sdc1 -U ‘90fvhтипа-UUID2cgh1237h4871’

и путём копирования с искодника всего содержимого с /dev/sdb1 на /dev/sdc1 заканчиваю создание клона. Наверное можно и с архива.

Сделалтак два раза с разными по объёму картами. Сработало. )

uriukti ()
Ответ на: комментарий от andytux

а что по сути даёт sync?

возможность дописать обработанные машиной данные в конечный файл. и не дать доступа к носителю или файлу до тех пор пока данные не будут дописаны. это по сути имеет большое значение, когда работа выполняется очень быстро наверное или в скриптах. в моём же случае, каждая копировальная задача оставалась на долго, так как в момент копирования мне приходится делать свою работу. а комп себе копирует. и возвращаюсь я после запуска копирования аж через минут 20. не может ведь программа не успеть переписать 3GB в течении этого времени? или таки может что-то не дописать? каждый раз я убеждался, что программа отработала, видел строку $, убеждался, что индикатор на картридере не беснуется, горит ровно. и после этого извлекал.

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

совсем забыл

при простом создании нового раздела, без копирования mbr или при копировании только 512 байт, даже с учётом переименовывания UUID, система не запускалась. Ощущение, что Armbian пишет ещё что-то своё в эти первые сектора.

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

Armbian пишет ещё что-то своё в эти первые сектора.

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

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

что по сути даёт sync?

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

andytux ★★ ()