dd를 사용하여 다양한 스토리지 파티션의 베어 메탈 복구 수행

dd를 사용하여 다양한 스토리지 파티션의 베어 메탈 복구 수행

정기적으로 백업되는 디스크가 있습니다. 디스크는 여러 개의 서로 다른 파티션으로 구성됩니다. 저는 항상 dd 명령을 사용하여 /dev/sdX를 한 번에 백업했는데 모든 것이 순조롭게 진행되었습니다. 때로는 이러한 백업을 사용하여 디스크를 다른 디스크에 복제하기도 합니다.

그러나 파티션 중 하나는 매우 크고 거의 변경되지 않는 것으로 나타났습니다. 단일 파티션만 백업하여 백업 크기를 줄일 수 있다면 더 좋을 것입니다.

물론 dd는 /dev/sdX1, /dev/sdX2 등만 백업할 수 있습니다. 하지만 저는 여전히 이러한 백업을 베어메탈에서 새 디스크로 복제할 수 있기를 원합니다. 현재 전체 디스크를 백업하면 이 작업을 제대로 수행할 수 있지만 파티션만 백업하면 상황이 달라집니다.

어떻게 해야 하나요? 그래도 MBR과 같은 것을 저장해야 합니까?

답변1

Linux의 dd의 경우 데이터가 파일 간에 전송되는지 블록 장치 간에 전송되는지는 중요하지 않습니다.

백업을 생성할 때 다음과 같이 디스크 이미지에 저장한다고 가정합니다.

dd bs=128M if=/dev/sda of=backup.dd

참고: 이렇게 하면 디스크의 처음 512(MBR) 또는 16k(GPT) 바이트에 있는 MBR 및 GPT 데이터도 복사됩니다.

Linux의 좋은 점은 "가상" 루프 장치가 있는 블록 장치처럼 이미지 파일을 사용할 수 있다는 것입니다.

udisksctl loop-setup --file backup.dd

이제 외부 백업과 마찬가지로 백업이 파일 관리자에 나타납니다. 일반적 으로 숫자 /dev/loopX로 지칭됩니다 X. 순환 장비에도 칸막이 /dev/loopXp1등이 있습니다.

이제 백업의 개별 파티션을 업데이트할 수 있습니다.

dd bs=128M if=/dev/sda1 of=/dev/loopXp1

업데이트 후 파일을 "제거"합니다.

udisksctl loop-delete --block-device /dev/loopX

하지만 기다려 보세요. 그 밖에도 특별한 파일 시스템 도구를 사용하면 모든 빈 공간을 건너뛰고 파티션의 사용된 부분만 복사하여 업데이트 속도를 높일 수 있습니다. 나는 이것을 추천할 수 있습니다(다른 사람들은 어떻게 생각하는지 모르겠습니다):

  • 외부 2/3/4:e2image -rap /dev/sda1 /dev/loopXp1
  • NTFS:ntfsclone --overwrite /dev/loopXp1 /dev/sda1

하지만 잠깐만요. 그 외에도 더 많은 것이 있습니다. 활용도에 따라 rsync를 사용하여 백업을 업데이트할 수도 있습니다. 이렇게 하려면 파일 시스템을 백업 파일에 마운트해야 합니다(루프가 설정된 후 루프가 제거되기 전).

udisksctl mount -b /dev/loopXp1
rsync -av wherever/dev/sda1/is/mounted/ wherever/dev/loopXp1/is/mounted/
udisksctl unmount -b /dev/loopXp1

관련 정보