내 목표는 재부팅하지 않고 시스템의 부팅 가능한 백업을 생성하는 것입니다. qemu-img를 사용하여 원시 dd 이미지를 vhdx로 변환하고 Hyper-V에서 실행하겠습니다.
liveCD로 부팅하고 다음을 실행하면:
dd if=/dev/sda of=/nfs/sda.raw conv=noerror,sync,notrunc
이를 vhdx로 변환하고 많은 노력 없이 Hyper-V에서 직접 실행할 수 있습니다.
fdisk -l 출력:
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7555D04B-D6DC-4ABB-8863-529E874BADAD
Device Start End Sectors Size Type
/dev/sda1 2048 2000895 1998848 976M EFI System
/dev/sda2 2000896 500117503 498116608 237.5G Linux filesystem
그러나 시스템이 온라인 상태에서는 해당 명령을 사용할 수 없으므로 dattobd 드라이버를 사용하여 다음과 같이 전체 ext4 파일 시스템을 복사했습니다.
dd if=/dev/datto0 of=/nfs/sda2.raw bs=1M
이렇게 하면 모든 데이터가 올바르게 복사됩니다 /dev/sda2
. LiveCD를 사용하고 파티션을 추가하면 해시가 동일하기 때문에 이를 확인했습니다 /dev/sda2
. 이제 liveCD로 부팅하여 복사할 수 있습니다 /dev/sda1
. 이는 EFI 파티션이므로 grub 또는 Linux 커널 관련 항목을 업데이트하지 않는 한 자주 변경되지 않습니다. 가끔 재부팅하여 파티션을 백업할 수 있지만, 방법을 아는 사람이 있다면 온라인 방법으로 하세요. 알려주세요.
/dev/sda1
이제 두 개의 별도 파일이 있으므로 기본적으로 liveCD에서 실행되는 것과 동일한 출력을 /dev/sda2
제공하는 이 두 파일을 하나의 파일로 조합하는 방법이 궁금합니다 . dd if=/dev/sda of=/nfs/sda.raw conv=noerror,sync,notrunc
완벽하게 정렬된 바이트만 필요합니까? 나는 이것을 위해 모든 곳을 찾았지만 운이 없었습니다. 어떤 종류의 도움이라도 대단히 감사하겠습니다!
답변1
파티션 지원을 통해 전체 디스크 이미지를 반복한 다음 dd
업데이트된 sda2
이미지를 여기에 넣을 수 있습니다.
losetup -P /dev/loop0 /nfs/sda.raw #this will create /dev/loop0p1 and loop0p2
dd if=/nfs/sda2.raw of=/dev/loop0p2
losetup -d /dev/loop0
또는 파티션 테이블에 따르면 첫 번째 파티션이 섹터 #2048에서 시작하므로 디스크에는 첫 번째 파티션("헤더") 앞에 2048 * 512바이트 = 1MiB의 공간이 있고 500118192 - 500117503 - 1 = 688 섹터( 344kiB)의 파티션 끝("테일") 외부 공간입니다. (첫 번째 섹터가 #1이 아니라 #0이기 때문에 -1)
첫 번째 파티션은 섹터 #2000895로 끝나고 두 번째 파티션은 섹터 #2000896으로 시작하므로 둘 사이에 사용되지 않은 공간이 없습니다.
디스크 끝에 파티션 테이블의 백업 복사본이 포함된 GPT 파티션 테이블을 사용하고 있으므로 "꼬리" 부분도 캡처해야 합니다. 섹터 #500117504에서 시작하여 디스크 끝까지 이동합니다.
따라서 "머리"와 "꼬리" 부분의 내용을 별도로 캡처한 다음 함께 넣을 수 있습니다.
dd if=/dev/sda of=/nfs/head.raw bs=512 count=2048
dd if=/dev/sda of=/nfs/tail.raw bs=512 skip=500117504
cat /nfs/head.raw /nfs/sda1.raw /nfs/sda2.raw /nfs/tail.raw > /nfs/sda.raw
파티션 테이블을 수정하지 않는 한 "헤드" 및 "테일" 부분을 한 번만 캡처하면 됩니다. 시스템을 정상적으로 사용하는 동안 변경해서는 안 됩니다.