дд, клон устройства на меньший диск, на устройстве не осталось места

Я видел множество вопросов, ответов и руководств, касающихся использования dd, cat и clonezilla для облегчения клонирования разделов и устройств. Вместо того, чтобы продолжать эти обсуждения, я надеюсь дать очень целенаправленные вопросы поведению dd в этом посте.

Я использую Ubuntu 18.04 LTS Live, загружается с USB. У меня есть жесткий диск на 500 Гб с Windows7 (/ dev / sda). Я изменил размеры разделов так, что чуть больше 420gb не выделено. Я стремлюсь сделать резервную копию загрузочной таблицы и разделов на 120 ГБ SSD (/ dev / sdb). SSD не имеет разделов и показывает 110gb нераспределенных.

sudo dd if=/dev/sda of=/dev/sdb сбой и передает «Нет свободного места на устройстве». Выборочная проверка разделов с помощью gparted, я вижу, / dev / sdb содержит те же разделы, метки, размер и неиспользуемые. Единственная заметная разница – это нераспределенное пространство.

Я могу загрузить Windows с SSD, но у меня осталось несколько вопросов, связанных с поведением dd .

  • dd пытался скопировать содержимое устройства, которое не было выделено?
  • у dd есть порядок операций? (что-то вроде раздела 1-> 99, затем разные блоки дисков)
  • случайно мне просто повезло в моем непосредственном использовании этого диска Windows? я слишком параноидален, думая, что на диске отсутствует контент?

Для чего это стоит, я планирую сохранить HDD в обозримом будущем.

2 Solutions collect form web for “дд, клон устройства на меньший диск, на устройстве не осталось места”

dd ничего не знает о разделах или какой-либо другой структуре на диске. Он не распознает «выделенные» или «нераспределенные» части диска. С точки зрения dd , устройство, указанное в качестве параметра, состоит из серии блоков. Таким образом, если вы запустите dd if=/dev/sda of=/dev/sdb , dd будет копировать блоки, начиная с начала /dev/sda в соответствующие пронумерованные блоки в /dev/sdb , пока не прочитает все блоки из /dev/sda или пока не появится ошибка. В вашем примере, поскольку /dev/sdb был меньше по размеру, чем /dev/sda , dd был прерван с сообщением об ошибке «На устройстве не осталось места» (on /dev/sdb ).

Йохан Мирин красноречиво объяснил, почему ваш подход привел к ошибке. Есть несколько обходных путей для копирования диска на меньший с помощью dd :

  • Как рекомендует mikeserv, вместо копирования всего устройства (/ dev / sda) вы можете просто скопировать определенный раздел, содержащий ваши данные, например, / dev / sda1. У этого есть несколько недостатков: вы должны знать, в каком разделе содержатся ваши данные, и если вы стираете исходный диск и хотите восстановить его, вам нужно будет сначала воссоздать исходную структуру разделов (в идеале у вас есть заметки о том, как это выглядело) ), а затем восстановить определенный раздел. (Все это может привести к ошибкам.) Если вы планируете запускать Windows с SSD, это, вероятно, ваш лучший вариант (хотя Windows иногда возражает против аппаратных изменений и хочет переустановить, но это, очевидно, не проблема в этот случай).
  • Если вы не возражаете против хранения содержимого вашего диска в сжатом виде, вы можете попробовать что-то вроде sudo dd if=/dev/sda bs=1M | gzip > /path/to/mounted/backup-drive/sda_backup.gz sudo dd if=/dev/sda bs=1M | gzip > /path/to/mounted/backup-drive/sda_backup.gz (если файл резервной копии недоступен для записи пользователем, либо используйте sudo -i для корневой оболочки, либо оберните всю команду с помощью sudo sh -c ' command ' ; Я устанавливаю bs потому что по умолчанию 512 байт неэффективно для больших объемов данных; вместо gzip вы также можете использовать другие программы сжатия). Это можно восстановить с помощью zcat sda_backup.gz | dd of=/dev/sdx bs=1M zcat sda_backup.gz | dd of=/dev/sdx bs=1M , но вы не можете загрузиться с раздела и даже смонтировать его сложно (см. этот вопрос для интересного обсуждения этого аспекта; ответ doug65536 также обсуждает «промывку нулями» для улучшения степень сжатия).

Проблема с вашим текущим состоянием состоит в том, что вы скопировали таблицу разделов с большого диска на меньший, что означает, что она эффективно содержит неверную информацию обо всем, что находится за пределами 120 ГБ, и хотя это не мешает вам загружаться и использовать раздел, это не идеал. Вы можете попытаться просто исправить таблицу разделов с помощью чего-то вроде gparted (гораздо быстрее, чем переписывание) и надеяться, что больше ничего не испортилось, или начать с нуля.

  • KDE 100%, если QT_SCALE_FACTOR = 2
  • Как установить разрешения для сервера vsftpd?
  • Отключение гнома в Ubuntu 17.10
  • Предупреждение CIFS VFS при передаче между NFS и CIFS
  • Определите соединение с общим доступом на основе имени пользователя
  • Сайт по-прежнему загружается с настройками по умолчанию UFW
  • GPT имеет неправильные записи
  • Как отключить пароль блокировки экрана, но сохранить экран блокировки?
  • Не удается открыть файл с пробелами в его имени из консоли. Зачем?
  • Активация двойной сетевой карты controllerа Intel 82575 PCI, Ubuntu
  • Ssh логин / shell не полностью работает (как раньше)
  • Interesting Posts

    cd в неизвестный каталог по известному пути

    как читать nand?

    MTA с локальной доставкой и для пользователя smarthost

    Режим перехвата SQUID с использованием внешней проверки подлинности и ICAP с адаптационным_send_username не работает

    Как я могу расширить относительный путь в командной строке с завершением табуляции?

    Анализируя сложные штучки и имея удобный список полезных

    Звуковые фильтры mplayer содержат противоположность режима «Караоке»?

    Как скомпилировать Python 3.2 на NetBSD? Код ошибки 127

    Linux Slackware (Broken – паника ядра)

    Что такое сокет?

    Извлечь имя файла из команды find

    Получите время, когда программа nohup R заканчивается

    Есть ли разница между read, head -1 и sed 1q?

    Пиннинг Debian – используйте стабильную, но при необходимости установите из теста / нестабильно | Также установите отступы из стабильных, backports, когда они доступны

    Не удается найти пакет, находящийся в репозитории

    Linux и Unix - лучшая ОС в мире.