Как клонировать жесткий диск на диск меньшего размера.
dd
и PartImage не поддерживают это требование. rsync
не будет копировать MBR, поскольку MBR не является файлом. Мне нужно клонировать жесткий диск, чтобы не делать резервную копию, поэтому rsync
не является приемлемым ответом.
Есть предложения?
Вы явно не можете клонировать больший раздел в меньший раздел (используя dd
и т. П.), Так как просто не хватает места.
Однако, если файлы, находящиеся в более крупном разделе, также поместятся в меньший раздел, вы можете использовать rsync
для копирования этих файлов. Точные варианты использования зависят от вашего конкретного варианта использования, но для простого копирования всех файлов следует выполнить следующее:
rsync -av /mount/point/of/large/partition/ /mount/point/of/small/partition
Редактировать: Еще раз: Вы не можете клонировать большее разделение на меньшее разделение . (Но продолжайте читать, ваша проблема еще может быть решена.)
Причина проста: ваш исходный раздел больше, чем целевой раздел. Что вы ожидаете? Должны ли некоторые блоки просто быть отброшены? Какие? И как dd
должен знать? Конечно, вы можете использовать опции dd
bs=
и count=
, чтобы копировать только первые и очень многие блоки исходного раздела так, чтобы они помещались в целевой раздел, но в итоге вы получите со сломанной перегородкой. Это, конечно, не то, что вы хотите.
Итак, поскольку вы не можете клонировать больший раздел на меньший раздел, единственное, что вы можете сделать, это сначала сначала уменьшить размер исходного раздела до размера, меньшего или меньшего размера. равен целевому разделу с чем-то вроде gparted
, который знает особенности файловой системы, так что вы не потеряете данные. И только , затем , вы можете использовать dd
для клонирования раздела. В идеале новый размер исходного раздела должен быть равен размеру целевого раздела (а не только меньше или равен ), иначе у вас останется некоторое нераспределенное пространство на целевой раздел после клонирования.
Обратите также внимание, что вы не должны , а просто скопировать MBR большего диска в MBR меньшего диска (или наоборот, в этом отношении). MBR, который имеет размер 512 байт и является первым разделом вашего жесткого диска, содержит информацию о расположении жесткого диска:
(Обратите внимание, что 446+64+2=512
.)
Если вы настаиваете на клонировании MBR, то клонируйте только первые 446 байтов, например:
dd if=/dev/source of=/tmp/mbr.bak bs=512 count=1
dd if=/tmp/mbr.bak of=/dev/target bs=446 count=1
... заменив /dev/source
и /dev/target
на имена устройств исходного и целевого жестких дисков, например, /dev/sda
и /dev/sdb
, соответственно. ( Более подробная информация доступна здесь. )
Однако, правильный способ сделать это - выполнить чистую переустановку Grub (или то, что у вас есть в MBR) на новом жестком диске.
Подводя итог, если вы хотите клонировать больший диск на меньший диск, выполните следующее:
Разложите таблицу разделов на целевом диске с таким количеством разделов, как на исходный диск. Должно быть однозначное соответствие между разделами на исходном диске и разделами на целевом диске, за исключением того, что (некоторые из) разделов на целевом диске могут быть меньше, чем их соответствующие разделы на исходном диске. Для этого используйте инструмент, например fdisk
или cfdisk
.
Для каждого раздела на целевом диске, который меньше соответствующего раздела на исходном диске, уменьшите размер этого соответствующего раздела на исходном диске, чтобы он соответствовал размеру раздела на целевой диск. Для этого используйте инструмент, такой как gparted
.
Для каждого раздела на исходном диске введите команду
dd if=/dev/sdaX of=/dev/sdbY
..., чтобы клонировать раздел /dev/sdaX
с исходного диска на соответствующий раздел. /dev/sdbY
на целевом диске (конечно, замените имена устройств соответственно).
Если вы настаиваете также на клонировании MBR, используйте две команды dd
, написанные далее выше в этот пост (те, с материалом /tmp/mbr.bak
). Однако имейте в виду, что чистая переустановка Grub была бы лучше.
Я пришел к этой проблеме, потому что обновление Win 10 до 1607 прерывалось после перезагрузки, вызванное тем, что мой NVMe (Samsung 950 Pro) не был распознан, поэтому я клонировал NVMe на другой (больший) внутренний диск (в моем случае) Toshiba "), обновил Win 10 и восстановил систему обратно в NVMe.
Вот шаги, которые мне нужно было сделать, чтобы достичь этого (поскольку восстановление с -icds
не сработало).
Если вы использовали Clonzila из стабильной ветки, вы должны перейти в режим загрузки Legacy в BIOS, чтобы иметь возможность загрузиться с компакт-диска. В противном случае, если вы используете загрузку из альтернативной ветки, она должна поддерживать загрузку UEFI.
Следуйте инструкциям под свою ответственность. Шаги и команды здесь проверяются и перепроверяются, но опечатки могут привести к потере данных или отказу оборудования, поэтому сначала изучите, что вы делаете, и примите эти шаги в качестве подсказок в правильном направлении.
в первый раз я думаю, что у меня были некоторые конфликты в Windows с NVMe, все еще имеющим информацию о загрузке Win, поэтому на этот раз я сразу же после первоначального клонирования в Toshiba (так, до перехода к загрузке UEFI) удалил все разделы на диске NVMe
~ удаление легко выполняется в оболочке Clonezilla с помощью:
sudo su
dd if=/dev/zero of=/dev/nvme0n1 bs=512 count=1
~ альтернативно, загрузитесь в GParted и сделайте это там визуально
(переключиться на загрузку UEFI в BIOS)
, так как копирование MBR мне ничего не помогло, GPT важен в этой истории, поэтому войдите в оболочку (Clonezilla) и скопируйте GPT из Toshiba в NVMe с
sudo su
sgdisk /dev/sda -R /dev/nvme0n1
sgdisk -G /dev/nvme0n1`
( объяснение )
со времен Clonezila (даже с ключами-экспертами) отказывается восстанавливать разделы, снова войти в оболочку и выполнить:
partprobe #forces kernel to reload partition infos
fdisk -l #shows all disks info
dd if=/dev/sda1 of=/dev/nvme0n1p1 bs=64K status=progress
dd if=/dev/sda2 of=/dev/nvme0n1p2 bs=64K status=progress
dd if=/dev/sda3 of=/dev/nvme0n1p3 bs=64K status=progress
...
( подробнее )
резервное копирование MBR и GPT Tosiba:
sgdisk --backup=sda.gpt /dev/sda
копируют резервную копию в безопасное место (чтобы мы могли восстановить ее, а не весь образ диска, который мы делали на шаге 6)
mkdir /mnt/usb
(put in usb flash or similar)
mount /dev/sdb /mnt/usb
cp sda.gpt /mnt/usb
umount /dev/sdb`
очистить информацию о разделе Toshiba, чтобы она не вызывала конфликтов с Windows
dd if=/dev/zero of=/dev/sda bs=512 count=1
(переключиться на загрузку UEFI в BIOS) при загрузке с Windows 10 (1607) DVD, выберите «Восстановить»> «Устранение неполадок»> «Командная строка» и выполните все это:
bootrec /fixboot
bootrec /scanos
bootrec /fixmbr
bootrec /rebuildbcd
exit
перезагрузиться в Windows 1607 на диске NVMe
Отказ от ответственности: я являюсь первоначальным автором WereSync
Это возможно при использовании WereSync . Если Синхронизация следует общему процессу ответа Мальте , но требует только одну команду, а не несколько. Кроме того, если вы используете свой клон в качестве резервной копии, он может постепенно обновлять эту резервную копию, поскольку он использует rsync в бэкэнде.
Для установки WereSync используйте pip:
pip install weresync
Оттуда вы можете просто использовать команду WereSync
weresync -C -g 2 -E 1 /dev/sda /dev/sdb
Приведенная выше команда копирует данные из / dev / sda в / dev / SDB. Флаг -C
отмечает, что WereSync должен проверить, эквивалентны ли разделы на двух дисках, и если они не являются, WereSync должен скопировать разделы из / dev / sda в / dev / sdb и изменить их размер так, чтобы они подходили. UUID новых разделов будут другими. Система, используемая для проверки правильности разделов, может быть привередливой, поэтому после первого резервного копирования я рекомендую опустить этот флаг.
Команды -g
и -E
могут быть опущены, но в этом случае установка загрузчика почти наверняка завершится неудачей.
-g
относится к «разделу grub», или раздел grub должен быть установлен на. Обычно это раздел, смонтированный на /. Поэтому, если у вас есть / dev / sda2, смонтированный на /, вы передаете -g 2
в WereSync, как в примере выше. Если это не указано, WereSync попытается самостоятельно найти нужный раздел, но это может привести к ошибкам. Я рекомендую просто передать флаг.
-E
относится к разделу EFI. Если ваш раздел EFI находится в / dev / sda1, передайте -E 1
в WereSync, как в приведенной выше команде.
Если у вас есть отдельный раздел для папки / boot, вам нужно также сообщить об этом WereSync. Если у вас это есть в / dev / sda3, то передайте -B 3
в WereSync.
Более подробную информацию о возможных флагах этой команды можно найти в Документации команд WereSync .
я публикую свой опыт сжатия загрузочного диска с 250 ГБ (sda) на диск 120 ГБ (sdc)
sda содержит 2 раздела:
, поэтому я делаю:
, тогда как мой gparted НЕ работает с lvm:
со спасательного диска:
pvresize / dev / sda2 --setphysicalvolumesize xxxxxxxxxxxxK (я даю На 1 Гб больше, чем пространство LV) (здесь у меня ОШИБКА ... так:
Но все же раздел был большим, так как я только уменьшил FS-LV-VG, поэтому:
я воссоздаю раздел с помощью fdisk:
fdisk /dev/sda
d --> 2
n --> p --> 2 --> default --> (new reduced
size!!!)
w
, а затем система запрашивает, чтобы старая таблица разделов использовалась до следующей перезагрузки. Но я забыл перезагрузить компьютер и сделать образ:
dd if = / dev / sda2 of = / dev / sdc2 bs = 4096 (в этот момент я подумал, что что-то не так, и я не смог загрузиться с sdc, так как таблица разделов не отражает конец нового sda2)
НО все было в порядке и после перезагрузки, и даже система выбирает раздел sdc для загрузки (жалуется на дубликат) PV, LV и / boot)
Я не знаю, если мне повезет, или я делаю ненужные шаги ... любой комментарий будет благодарен.
После сжатия файловой системы на большем диске с помощью GParted я поместил два диска в корпус RAID в режиме зеркалирования, где больший диск является источником, а меньший диск является целью. Мне просто нужно было нажать кнопку сброса внутри корпуса (не менять режим, т. Е. От Raid 1 до Raid 0), чтобы начать клонирование. Работал отлично! :) Я использовал чехол GW3.5AX2-SU3 / MB Raid.
Вы можете попытаться сделать это в два шага, во-первых, превратить клон системы в разреженное изображение (изображение увеличивается при добавлении в него большего количества материала). Теперь восстановите изображение из этого образа на второй меньший диск.
это можно сделать. С помощью живого компакт-диска просто уменьшите файловую систему (resize2fs), чем lvm (если есть) последнего раздела (например, / dev / sdc3) с большого диска, чтобы он мог поместиться на маленьком диске. ,
С помощью fdisk удаляйте и воссоздайте с меньшими секторами последний раздел (/ dev / sda3), поэтому последний сектор большого диска имеет то же значение, что и последний сектор малого диска.
Чем сделать #dd, если = big of = small bs = 10M, пока не закончится свободное место.
Особая осторожность при сокращении, поскольку одно неверное значение приведет к потере данных.
Вы можете перенести свои данные на диск меньшего размера, используя Clonezilla и GParted .
Использование GParted Live CD сокращает ваши разделы так, чтобы они поместились на новом диске. Переместите разделы так, чтобы пустое (серое) пространство находилось в конце / справа от вашего диска. Если перед первым разделом уже было пустое место, оставьте это место, поскольку оно может содержать загрузочную или другую скрытую информацию.
С помощью Clonezilla создайте клон device-device
. Выберите дополнительные параметры и включите параметр -icds
, чтобы пропустить проверку размера диска. Продолжите работу с клоном, удалите старый диск и попытайтесь загрузиться с нового диска. Если вы получаете ошибки, попробуйте опцию -fsck-src-part
, которая поможет вам исправить ошибки на исходном диске.
Если вы уверены, что все данные с изображения могут уместиться на меньшем диске, то есть они не будут записаны на неправильный диск пробел, вы можете проверить опцию «-icds». Предупреждение! Чтобы выбрать эту опцию, вы должны знать, что вы делаете!
Один часто задаваемый вопрос , который я прочитал, предложил использовать оба варианта -icds
и -k1
с Clonezilla, однако это не сработало для меня. Другие упоминали, что вы можете копировать разделы, используя GParted, однако он не может копировать все типы разделов, и я не смог загрузить свою машину после использования этого метода, вероятно, из-за того, что некоторая скрытая информация между разделами не была скопирована.
Поскольку большинство приведенных выше примеров, кажется, предлагают на самом деле изменить размер исходного диска, существует риск для ваших данных, изменив их перед тем, как на самом деле сделать копию, если она есть.
Есть другой способ, который менее рискованный, хотя и очень ручной, который я использую. Поскольку он оставляет нетронутым исходный диск на тот случай, если вы захотите отступить, потому что что-то не получилось.
Кроме того, с помощью клонирования / изменения размера вы не можете переключиться на более новую файловую систему при переходе на новый диск во время замены диска. С помощью описанной ниже процедуры вам нужно всего лишь создать файловую систему по вашему выбору на целевом диске.
Установите новый целевой диск вдоль бокового оригинального диска в свой компьютер.
В моем примере источником (исходным диском) является / dev / sda, а местом назначения (новым меньшим диском) является / dev / sdb. В вашей настройке он может отличаться
mount src as только для чтения в / mnt / source
mount диск назначения в / mnt / destination
копирует файловую систему src в файловую систему назначения с помощью:
ubuntu использует uuid вместо имени устройства, чтобы найти и смонтировать диск, так как у нас есть новый диск, который мы хотим изменить fstab назначения для использования новых дисков uuid для монтирования диска
ls -la / dev / disk / by-uuid
теперь меняет uuid на / и поменяйте местами в / mnt / destination / etc / fstab. не забудьте изменить файловую систему для точки монтирования, если вы решили изменить ее на что-то отличное от оригинального диска
, если важно, чтобы grub был той же версии, загрузите Снова запустите оригинальный диск, запустите и запустите приведенную ниже команду, чтобы установить grub на новый диск.
Теперь удалите Исходный диск с вашего компьютера и загрузите целевой диск. grub не сможет полностью загрузиться и выйдет в оболочку восстановления в оболочке восстановления grub:
для загрузки некоторых необходимых модулей grub - insmod ext2 - insmod linux перечисляет ваши дисковые устройства - ls
выбирает правильное устройство (в моем примере это hd0, msdos1)
найти точное имя vmlinuz -xxx и initrd-xxx для настройки grub для использования
ls / boot /
смотрите и используйте правильное имя для vmlinuz и initrd you получил от ls выше и использую их вместо примера, который я использую здесь ниже
linux /boot/vmlinuz-2.6.32-5-amd64 root = / dev / sda single
, если / dev / sda - это устройство, на котором дисковод будет диском rootfs в следующий раз, когда вы перезагрузите> компьютер только с диском dst
initrd /boot/initd.img-2.6.32-5-amd64
это должно было успешно загрузить машину обновите grub для использования нового диска uuid, чтобы вам не приходилось повторять эту процедуру каждый раз:
«Псевдоклонирование» жесткого диска большего размера может быть выполнено с помощью Clonezilla. Эффективно вы можете сохранять и восстанавливать разделы диска. Следующие шаги (разработанные для переноса с жесткого диска на SSD) помогут вам:
Первый трюк заключается в использовании Gparted для изменения размера разделов на жестком диске, сжимая каждый раздел так, чтобы уменьшить количество неиспользуемого пространства, которое он содержит. Очевидно, что размеры разделов должны быть такими, чтобы общее пространство, необходимое для всех разделов, было меньше емкости SSD.
Затем запускается Clonezilla и создается копия отдельных разделов жесткого диска (с помощью параметра saveparts), которые временно сохраняются на внешнем USB-накопителе. Обратите внимание, что необходимо сохранять разделы (saveparts), а не создавать образ всего диска (saveisk).
См .: «Клонирование» жесткого диска в меньший твердотельный накопитель для более подробного обсуждения процесса и ряда ссылок на справочные источники.
Gparted должен выполнить эту работу
После изменения размера с помощью gparted загрузитесь с диска, чтобы дать ОС возможность исправить любые ошибки перед созданием образа с помощью Clonezilla.
Затем запускает Clonezilla и делает копию необходимых разделов жесткого диска
Еще один вариант, который я нашел для меня большим: MondoRescure
Mondo Rescue - решение аварийного восстановления GPL.
Он поддерживает ленты, диски, сеть и CD / DVD в качестве носителя для резервного копирования, несколько файловых систем, LVM, программное и аппаратное обеспечение Raid.
Простое руководство можно найти здесь
Я выложу несколько скриншотов:
1. Выберите из списка поддерживаемых типов носителей для резервного копирования.
2. Если вы выполняете резервное копирование на CD / DVD- + R [W], то Mondo спросит вас, поддерживает ли ваш CD-рекордер технологию BurnProof внутри ноутбука, или иным образом эксцентричный. Если вы выполняете резервное копирование на ленточный стример, вы не увидите это сообщение
3. Сколько компрессии вы хотите? Нет, если ваш стример имеет встроенное аппаратное сжатие. Максимум, если ваш процессор невероятно быстрый. Среднее значение должно подойти для большинства ситуаций.
4. Если вы хотите сделать резервную копию всего компьютера (за исключением / sys, / run и / proc, а также / tmp), то оставьте это как / по умолчанию. В противном случае укажите подмножества (например, / usr / local | / home), которые обязательно будут помещать канал между каждым путем.
5. Если вы выполняете резервное копирование всего компьютера, вы можете исключить определенные каталоги, например, / Общий / MP3. Пожалуйста, укажите их в диалоговом окне «Исключить каталоги». Пожалуйста, вставьте трубу между каждым путем, например, / shared / private | / scratch | / nfs | / windows
6. Ваше ядро нормально? Пользователи Red Hat, Mandrake, SuSE, Debian и Slackware, в общем, должны сказать «да», потому что эти производители хороши в создании надежных ядер. Если вы используете Gentoo или LFS, то ваше ядро может быть нестандартным, и в этом случае скажите «нет», чтобы использовать отказоустойчивое ядро Mondo (предоставляется отдельно).
7. Если вы хотите проверить архивы после записи их в СМИ, скажите «да» здесь. Если вы абсолютно уверены в своем оборудовании и дистрибутиве Linux, скажите «нет» ... и немного помолитесь.
8. Если вы уверены, что хотите пойти дальше, скажите «да» и найдите что-нибудь еще, пока Мондо выполняет резервное копирование вашего компьютера. Если вы скажете «нет», то вы будете бесцеремонно выгружены в командной строке. : -)
9. Теперь начнется процесс резервного копирования. Сначала нужно выполнить несколько задач перед резервным копированием, но резервное копирование в основном выполняется. Чтобы упростить процесс резервного копирования, вам был задан ряд вопросов. В следующий раз, если хотите, вы можете вызвать mondoarchive с различными ключами командной строки, чтобы управлять его поведением, вместо того, чтобы отвечать на ряд вопросов. Для получения дополнительной информации см. Справочную страницу.
10.Mondo создаст каталог всех файлов для резервного копирования. Это может занять до пяти минут. Список файлов будет разделен на наборы, примерно 4 МБ (до сжатия) файлов на набор. Обычно это занимает одну минуту.
11. Мондо звонит Минди. Mindi генерирует образ загрузочного носителя и образы вспомогательных дисков с данными на основе вашего существующего дистрибутива Linux и файловой системы. Таким образом, вы можете быть уверены, что инструменты Mondo будут совместимы с вашими существующими файловыми системами и двоичными файлами: инструменты Mondo - ваши инструменты. Минди бежит до пяти минут.
12. Наконец, Mondo начинает резервное копирование вашего компьютера. Этот процесс может занять несколько минут или несколько часов, в зависимости от того, сколько данных вы архивируете, какова скорость вашего процессора, сколько у вас оперативной памяти и так далее. Он будет создавать резервные копии ваших обычных файлов, а затем ваши большие файлы (файлы, размер которых превышает примерно 32 МБ). Если вы решили проверить свои резервные копии, Mondo сделает это тоже.
1. Выберите тип носителя для резервного копирования. Процесс реального восстановления очень похож на тот, который вы увидите, если набрать mondorestore без параметров после загрузки с носителя Mondo.
2. Нажмите «OK», когда вставили кассету / CD. Если вы создали резервную копию ленты, самой ленты должно быть достаточно. Если вы сгенерировали резервную копию CD, первого CD должно быть достаточно. В противном случае вам может понадобиться загрузочный носитель.
3.Flag файлы и каталоги, которые вы хотите восстановить. Используйте кнопки «Больше» и «Меньше», чтобы открывать и закрывать подкаталоги.
4.Укажите местоположение, в которое нужно восстановить файлы. В общем, '/' подходит. Если вы не хотите перезаписывать более новые версии восстанавливаемых файлов, укажите / tmp / BKP или аналогичный путь восстановления.
5.Mondorestore будет получать информацию о конфигурации с носителя. (Пример экрана предназначен для пользователей ленты. Пользователи компакт-дисков увидят что-то другое.)
6.Данные будут восстановлены на жесткий диск - сначала обычные файлы затем любые большие (32 МБ или более) файлы в наборе восстановления.
Точное клонирование невозможно, так как Malte Skoruppa уже опубликовал. Однако clonezilla может выполнить эту задачу, если диск большего размера не заполнен (Мальте уже упоминал об этом).
В основном вам нужно включить расширенные опции и «игнорировать» предупреждение о меньшем диске. См. Clonezilla docs для подробностей со скриншотами. У меня возникла та же проблема при восстановлении резервной копии жесткого диска объемом 160 ГБ на твердотельный накопитель объемом 64 ГБ. Для меня это сработало хорошо.
Другим решением, которое должно быть результатом, который вы хотите получить, было бы восстановление на диск того же размера и перераспределение, чтобы соответствовать новой схеме разделов на меньшем диске. См. jsm-techblog.blogspot.de , чтобы узнать, как это сделать.
Может быть, не правильный ответ на вопрос, но я прихожу на эту страницу, пытаясь решить аналогичную проблему:
Я хотел клонировать старую компактную флэш-карту емкостью 256 Мбайт в 32-мегабайтную, которая была разобрана, Флэш-карта содержит небольшое устройство Linux, которое производит небольшие пружинные катушки.
Решено следующим образом:
(Конечно, эффективное пространство, используемое в 256Mb было < 32Mb, так что оно хорошо вписывается)
создать изображение флэш-карты 256 Мб с 'dd' (т.е. при условии, что карта смонтирована в / dev / sdb):
dd if=/dev/sdb of=image256.iso
Используйте unetbootin , чтобы прочитать ' image256.iso 'ISO (опция Diskimage).
Выберите USB-накопитель, на котором находится карта 32 МБ, и перейдите к сбросу образа на карту 32 МБ.
Вот и все, 32-мегабайтная карта снова успешно запустила мою машину.
НТН