
내 목표는 다시 시작하지 않고 시스템의 부팅 가능한 백업을 만드는 것입니다. 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 섹터(344 kiB) 파티션 외부 끝("테일")의 공간입니다. (첫 번째 섹터가 #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
파티션 테이블을 수정하지 않는 한 "헤드" 및 "테일" 부분은 한 번만 캡처해야 합니다. 시스템을 정상적으로 사용하는 동안에는 변경되어서는 안 됩니다.