Как перейти с одного диска на другой, который имеет другой размер?

21

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

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

А что, если это другая файловая система (например, от ReiserFS до ext4)?

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

Обновление - многие из вариантов очень жизнеспособны, и я изменил этот вопрос на вики сообщества, потому что я не думаю, что есть «правильный» ответ.

Уоррен
источник
1
superuser.com/questions/32164/… был запрошен диск / раздел Windows
Уоррен

Ответы:

10

Клонируйте диск с помощью CloneZilla , затем используйте gparted, чтобы изменить его размер. Оставьте свой старый на случай, если пойдет не так :-)

Кстати, этот путь бесплатный.

craigmoliver
источник
2
Мне нравится бесплатная часть здесь, хотя ничто не сравнится с ХОРОШИМ рабочим программным обеспечением, которое делает все (вместо 3 бесплатных программ)
Ivo Flipse
1
Это всего лишь две бесплатные программы, и это совершенно безболезненно. Загрузки ISO не проблема.
Крейгмоливер
Я могу подтвердить, что это работает. Я успешно переместил свой дополнительный диск с Windows 7 с диска 160 ГБ на диск 1 ТБ. Клонировал его на мой Linux-диск с помощью Clonezilla. Восстановил его на новом диске и изменил его размер с помощью средства управления дисками Windows 7. Это было от NTFS до NTFS, хотя.
Томас Ватнедал
Вы говорите «клонировать диск», хотя он попросил клонировать раздел. Также он сказал, что другая файловая система.
Бароп
5

Решение, которое я использовал в прошлом tar. Если разделы имеют одинаковый размер и тип, вы можете использовать dd.

Вот мой ответ на затруднение:

  1. загрузиться с использованием живого компакт-диска, такого как Slax
  2. убедитесь, что разделы, которые вы хотите, находятся на новом диске
  3. убедитесь, что старый и новый диски смонтированы, например, /tmp/driveoldи / tmp / drivenew '
  4. запустить из терминала следующую tarкоманду:

    (tar cp --xattrs /tmp/driveold/path) | (tar x /tmp/drivenew/path)

  5. повторите для каждого раздела, который нужно скопировать

Это работает для каждого раздела, на котором я когда-либо пробовал (исключая /boot, для которого я гарантирую, что разделы идентичны, и использую dd).

кроличий садок
источник
2
Мне нравится это решение, потому что оно очень простое, но я думаю, что вам понадобятся некоторые дополнительные параметры, такие как p (сохранить разрешения), чтобы получить все метаданные.
Джей Конрод
1
ты прав на р - я добавил это :)
Уоррен
2
Говоря о метаданных, следует также использовать --xattrsопцию (хранить ACL и информацию SELinux).
Кристиан Чиупиту
2 гудрона, связанные с трубой, можно заменить на cpio --pass-through.
Кристиан Чиупиту
1
Какая версия tarимеет --xattrsопцию? Не мой. Я предлагаю использовать rsyncили просто cpвместо: serverfault.com/questions/306538/…
Тедди
2

Это одна из причин, по которой мне нравится LVM. Просто добавьте новый диск в группу томов, pvmoveлогические тома со старого на новый диск, удалите старый диск из группы томов, а затем из системы. Если вы заменяете загрузочный диск, вам также необходимо обновить загрузчик.

PGS
источник
То есть отличная идея - за исключением , если вы не используете LVM, это немного боли :) Спасибо за предложение, хотя!
Уоррен
Что следует учесть при следующей установке :-)
pgs,
2

+1 к Уоррену и использовать смолу.

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

Если вы смоделировали сбой диска (отключите питание от старого диска), начните восстановление на новый диск. И когда вы закончите, вы запускаете старый диск и проверяете их наличие всех файлов.

Если они идентичны, вы оба перенесли все свои данные, и вы знаете, что ваш план резервного копирования действителен и работает.

Johan
источник
хорошая идея - хотя для тех из нас (<whistle mode = "innocent" />), у которых нет «резервного» решения, это также может быть хорошее время для его создания :)
warren
1
:)
Йохан
2

Другим вариантом будет загрузка с liveCD и монтирование старого диска только для чтения. Это сделано для того, чтобы livecd не мог изменить его во время копирования. Затем rsync -avz /mnt/olddisk/ /mnt/newdisk(завершающий слеш после olddisk необходим). Как уже упоминали другие, если это загрузочный диск, который расширяется, вам нужно будет перезапустить grub-install <new device>его, прежде чем он станет загрузочным.

Shoan
источник
есть один, от которого я бы не хотел :)
Уоррен
1

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

chills42
источник
1

Создайте образ из исходного раздела и поместите этот образ на новый жесткий диск.

Norton Ghost ™ 14.0 делает то или иное программное обеспечение для изображений


Вот список программного обеспечения для клонирования дисков

Сравнение программного обеспечения для клонирования дисков [wikipedia]

MicTech
источник
4
Acronis True Image - еще одна альтернатива ( acronis.com/homecomputing/products/trueimage )
fretje,
6
К сожалению, этот метод требует покупки Norton Ghost
craigmoliver
1

Я также нашел Disk Copy , которого нет в списке в Википедии, но никогда не использовал его.

кроличий садок
источник
1
Disk Copy - хороший вариант.
Крейгмоливер
К сожалению, это только для Windows, и этот вопрос был помечен как Linux.
programmer5000