Usb 메모리 스틱을 비트별로 복사하는 방법은?

안녕하세요?

우분투와 직접 관련된 것은 아닌데요.
제가 윈도즈가 설치된 HP에서 제조한 laptop PC에서 우분투를 병행 설치하려고 하니, 이미 윈도즈가 4개의 주 파티션을 차지하고 있더라고요.

/dev/sda1 : SYSTEM (203 MB) : 윈도즈 부트 로더 등이 들어 있습니다
/dev/sda2 : Windows, Program Files, 등 윈도즈 자체가 들어 있습니다.
/dev/sda3 : Windows Recovery (12~13GB) : 공장 출하 상태로 되돌리기 위한 데이터라고 합니다.
/dev/sda4 : HP_TOOLS (200 MB) : HP maintenance에 쓰는 program들이 들어 있다는데 Windows Recovery와 같이 쓰이는 것 같습니다.

MBR 디스크이므로 주 파티션 하나를 확보해야 우분투를 설치하므로 Windows recovery를 없애고 크기를 좀 늘려서 거기에 우분투를 설치하려고 했습니다. 그런데, 이 partition을 제거하면, 나중에 윈도즈에 문제가 생기면 공장 출하 상태로 되돌릴 수 없으므로 HP에서 제공한 program을 이용하여 16 GB USB 메모리 스틱에 Windows Recovery와 HP_TOOLS를 백업하고 제거하였으며, 우분투 설치에도 성공하였습니다.

문제는 PC의 보증 기간이 끝난 상태이기 때문에, USB에 백업한 Windows Recovery를 하나 더 가지고 있고 싶은 생각이 들더라고요. 만의 하나, 이 USB에 문제가 생기면, HP 서비스에 가야 하고 돈 내라고 할 것이 확실하고 해서, 백업을 하나 더 가지고 싶었던 것이죠. 그런데, HP에서 제공한 program은 백업을 하나만 할 수 있도록 되어 있습니다. 그래서 dd command를 이용하여 USB 메모리 스틱을 bit-by-bit로 복사 (cloning)하려고 했는데요. 다행히도 굴러다니는 16 GB 메모리 스틱이 하나 더 있어서 다음과 같이 베낄려고 하였습니다.

[code:2cfdtjh1]dd if=/dev/sdb of=/dev/sdc[/code:2cfdtjh1]

sdb가 HP 프로그램을 이용해 만든 Windows recovery USB 메모리이고, sdc가 sdb를 cloning해서 또다시 만들려는 USB 메모리죠. /dev/sdb는 USB 메모리 크기 전체를 차지하는 /dev/sdb1 파티션 하나만 있고, 부팅 가능한 USB입니다.

그런데 아쉬운 것이 sdb와 sdc가 똑같이 16 GB이긴 한데, sdc가 몇백 MB 정도 작아서 위 명령어의 끝 부분에서 error가 납니다. 에러가 나는 것이야 상관없죠. 데이터는 약 12 GB 남짓이라서 데이터는 모두 복사되었으니까요. 문제는 sdc의 파티션 테이블이 sdb의 것을 그대로 복사한 것이기 때문에 /dev/sdc1의 파티션 테이블이 /dev/sdc의 크기를 넘어간다는 것이죠. 그래서 그대로는 사용할 수 없습니다.

인터넷을 검색해 보니, parted와 sfdisk를 이용하여 파티션 테이블을 고칠 수 있다는 글 (아래에 link)이 있어서 이 방법을 따라서 고쳐보았습니다.

[url:2cfdtjh1]http://gparted.org/h2-fix-msdos-pt.php#partition-outside-disk[/url:2cfdtjh1]

즉, /dev/sdc1의 끝부분이 틀렸으니, 끝 부분을 USB 크기 (sudo fdisk -l을 했을 때 보여주는 크기)로 고쳐준 것이죠. 고치고 나서, sfdisk와 fdisk -l로 보면 분명히 고쳐진 것으로 보이는데 disk mount가 안되고 mount를 시도하면 error가 나더라고요. 두번이나 시도해 보았기 때문에 실수가 있었던 같지는 않습니다.

혹시 이 문제를 해결할 방법이 있을까요? 즉, USB 메모리 스틱을 cloning하는데 약간 작은 것으로 cloning하는 방법이죠. 아마도 상용 program 중에는 찾아보면 있을 겁니다. 그런데, 이것 한번 하자고 사는 것은 좀… ㅎㅎㅎ 가능하다면 무료 software로 가능한 지 알고 싶네요.

<P.S> 제가 해결한 방법은… 다행스럽게도 약 10년전에 사용하던 30 GB 외장 하드가 하나 더 있어서 다음과 같이 해결하였습니다.
(1) HP program으로 만든 16 GB USB 메모리를 30 GB 외장 하드에 dd로 복사함
(2) 외장 하드에 복사된 파티션 크기를 gparted를 이용하여 1 GB 정도 줄임
(3) 외장하드를 또다른 USB 메모리에 dd로 복사함
위와 같이 하여 해결하기는 했습니다. 그런데, 이렇게 다른 것을 거쳐가는 방법이 아니라 직접 가는 방법이 있는지 궁금하네요.

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

bs, conv 옵션을 주고 시도해보세요.

yemharc님 감사합니다.

시도해 보겠습니다.