DD를 사용하여 기존 드라이브에서 새 드라이브로 데이터를 마이그레이션하려면 어떻게해야합니까?


29

랩톱의 내부 SATA 하드 드라이브를 40G 드라이브에서 160G 드라이브로 업그레이드하고 있습니다. SATA 카드가있는 Linux / Ubuntu 데스크탑이 있습니다. 실제로 직장에서 몇 개의 CentOS 및 FreeBSD 상자에 대해 동일한 작업을하고 싶습니다. 이것은 동일한 솔루션을 갖는 것 같습니다.

DD 를 사용 하여 40G 파티션을 160G 드라이브에 미러링하거나 40G 파티션을 로컬 시스템의 이미지로 저장 한 다음 해당 40G 이미지를 160G 드라이브에 복사 할 수 있다고 들었습니다.

아무도 내가 어떻게 할 수 있는지 설명 할 수 있습니까? gparted 와 같은 다른 유틸리티가 필요합니까?


3
아하 ... 이것이 첫 번째 질문입니다 !!
Harshit Shrivastava

2
질문 하나! 나는 또한이 사이트의 제안자이며, 상당히 기술적 인 질문으로 사이트를 시작한다고 생각했습니다. 나는 티셔츠와 약간의 장식으로 보상을 받았다.
Stefan Lasiewski

답변:


6

첫 번째 작업은 두 디스크를 기존 Linux 시스템에 연결하거나 새 디스크를 원래 시스템에 연결하는 것입니다.

좋은 디스크 위에 빈 디스크를 복사하는 것이 매우 간단하므로 매우 주의 해야합니다 !

부트 섹터와 모든 것을 끝내려면 다음과 같이하십시오.

dd if=/dev/hdx of=/dev/hdy

hdx40G 디스크는 어디에 hdy있고 160G 디스크는 어디에 있습니까 ? 와 같은 파티션 번호가 없다는 것을 알 수 있습니다 /dev/hdx1. 이것은 전체 디스크, 파티션 정보 및 모두를 복사합니다.

새 디스크는 기존 디스크와 마찬가지로 40G가 할당됩니다. 노트북에 다시 넣으면 바로 부팅됩니다. LVM을 사용 했습니까? 그렇지 않으면 모든 파티션을 사용하지 않았기를 바랍니다. 이 지점을 지나가려면 더 많은 정보가 필요합니다.

다른 해결책은 각 개별 파티션을 덤프하는 것입니다. 부팅 정보를 다시 만들어야하기 때문에 상황 인식이 훨씬 더 필요합니다.

이 모든 것은 하드 디스크를 업그레이드하지 않고 컴퓨터를 복제하는 데 가장 적합합니다. 백업을 사용하여 새 설치로 복원하는 것이 훨씬 좋습니다.


17

일반적으로 나는 "외장 인클로저를 사용하여 두 번째 하드 드라이브를 연결하고 리눅스 CD에서 부팅 한 다음과 같은 명령을 사용하는 것과 같은 해결책을 제안 할 것입니다 dd if=/dev/sda of=/dev/sdb bs=1G. 그러나 같은 기술을 사용하기를 원하기 때문에 더 나은 솔루션.

모든 서버와 랩톱은 Clonezilla를 사용하여 직장에서 이미지를 얻습니다 . 그것을 사용하는 두 가지 방법이 있습니다 ... 하나는 전용 서버를 사용하고 아마도 당신을 위해 과잉 일 것이고, 다른 하나는 부팅 CD와 외장 하드 드라이브를 사용합니다.

아이디어는 Clonezilla CD로 부팅하고 외부 USB 드라이브가 느리게 작동하는 것입니다. Clonezilla는 기존 드라이브의 이미지를 만드는 과정을 안내합니다. 그 후 시스템 전원을 끄고 드라이브를 교체 한 다음 Clonezilla로 다시 부팅하여 데이터를 복원합니다.

이를 통해 A) 이미지를 더 큰 드라이브에 배치하고 B) 데이터 백업을 유지할 수 있습니다.


5

dd를 사용하여 이와 같은 디스크를 복사 할 있지만 여러 가지 단점이 있습니다.

  1. 대상은 원본과 크기가 정확히 같거나 커야합니다.
  2. 복사 후 추가 공간을 사용하려면 파티션 크기를 조정해야합니다
  3. 여유 공간을 복사하는 데 시간이 낭비됩니다
  4. 이전 디스크에 존재하는 모든 조각화는 유지됩니다

Ghost4Linux, partclone 또는 clonezilla와 같은 이미징 프로그램을 사용하면 최소한 숫자 2와 3을 처리해야합니다. 또한 새 디스크를 포맷하고 마운트 한 다음 모든 파일을 cp -ax(root로) 복사 한 다음 다시 설치하십시오. 새 드라이브의 부트 로더. 이 방법은 상기 단점들 중 어느 것도 겪지 않는다.


3

파티션을 간단히 복사하기 위해 dd if=/dev/srcDrive of=/dev/dstDrive이와 같은 것을 사용할 수 있습니다 . 맨 페이지 를 읽는 것이 좋습니다 . 지금 일하고 있기 때문에 더 많은 정보를 줄 수 없습니다 ..


2

dd로 수행하는 방법을 물었지만 덤프 출력 을 restore 로 파이프하는 것이 더 나았습니다 . 소스 ad1s1a 및 대상 ad2s1a가 주어진 경우 :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

FreeBSD에서 이것을 시도했지만 실제로 FreeBSD 포럼 에서 찾았습니다.


1

간단한 예는 다음과 같습니다.

dd if=/dev/sda of=/dev/sdb

그러나 특별한 도움이 필요한 경우 맨 페이지 (man dd)를 읽거나 Google에서 검색해야합니다.

또 다른 아이디어는 rsync를 사용하는 것일 수 있습니다 (-az [한 파일을 한 파일 씩 복사하는 대신 파일을 패키지화 함] 또는 --numeric-ids [같은 이름 대신 uid / gid를 사용하는 것과 같은 올바른 옵션을 설정하는 것을 잊지 마십시오) "루트"] 및 다른 일부). 링크에는 많은 예제가 포함되어 있습니다.

새 HDD에 파티션이 없으면 gparted 또는 palimpset을 사용할 수 있습니다.

확실하지 않으면 HDD를 포맷 한 다음 rsync와 데이터를 동기화합니다.


1

글쎄, 나는 연결된 디스크와 라이브 CD로 부팅하여 이와 비슷한 마이그레이션을 수행했다.

  1. 두 번째 디스크의 첫 번째 디스크에 대한 파티션 정보를 다시 만들어 여분의 공간을 사용하기 위해 일부 파티션을 더 크게 만들 수 있습니다.
  2. 그런 다음 / dev / sda {1,2,3,4}가 있고 / dev / sdb {1,2,3,4}에 복사하려고한다고 가정하면 mkdir / mnt / sd {a, b} {1 , 2,3,4} 각 파티션에 각 파티션을 마운트하십시오 (또는 하나씩 파티션을 원할 경우 / mnt / origin / mnt / destination을 만들고 각 쌍을 마운트 / 마운트 해제 할 수 있습니다)
  3. 그런 다음 cp -avr / mnt / origin /을 수행하십시오. / mnt / destination / (또는 cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. 웹을 탐색하는 동안 기다리십시오 :)
  5. grub, lilo 또는 사용하는 모든 bootmanager를 다시 설치해야합니다.

파일을 복사 할 때 조각 모음을 수행하는 방식으로 파티션의 파일 시스템을 변경할 수도 있습니다 (reiserfs 또는 ext3에서 ext4로 마이그레이션 등). 그러나 복사 한 후에 / etc / fstab을 편집해야합니다. 새로운 상황.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.