하드 드라이브 클론 이미지 크기

하드 드라이브 클론 이미지 크기

HostA에서 HDDA(파티션)의 이미지 백업을 생성하고 HostB에 저장했습니다.

ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 | gzip -1 -" | dd of=sda1.gz conv=sync,noerror

HDD 크기는 200GB이고, 생성되는 이미지는 약 45GB입니다.

드라이브 크기와 비교하여 이미지 크기가 정확합니까? 약 77%의 압축을 달성합니까?

내 의견은 다음과 같습니다.

이제 LVM2_member 드라이브를 포맷하고 ext3으로 다시 생성한 다음, 찾고 있는 데이터에 액세스할 수 있도록 생성한 이미지를 복원하겠습니다.

감사합니다!

답변1

디스크 이미지의 압축률은 저장된 데이터 유형, 사용되었거나 사용된 데이터 양에 따라 크게 달라집니다(드라이브 수명 동안 명시적으로 삭제되지는 않음).

한마디로 단언할 수 없습니다. 77%는 0%(비디오/oggs로 가득 찬 디스크) 및 99%(빈, 최근에 0으로 지워진 디스크)와 마찬가지로 완벽하게 합리적입니다.

이제 명령에 대한 몇 가지 설명을 살펴보겠습니다.

ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 | gzip -1 -" |
  dd of=sda1.gz conv=sync,noerror

conv=sync,noerror디스크에서 읽는 데 사용됩니다 . dd소스 파일에서 고정 크기 읽기를 수행하고 대상 파일에 고정 크기 쓰기만 수행하는 어리석은 응용 프로그램입니다.

디스크에 오류가 발생하고 섹터에 오류가 발생하면 512바이트의 고정 크기 읽기가 실패하고 아무것도 반환되지 않을 수 있습니다. dd해당 섹터의 출력에 0바이트가 기록 되면 데이터가 이동되면서 대상이 손상되었음을 의미합니다. 대신, 당신이 원하는 것은 실패한 섹터를 대체하기 위해 대상에 512바이트의 0을 출력하는 것입니다. 그게 바로 conv=sync그 부분이에요.

또한 첫 번째 오류 =>에서 중지되는 것을 원하지 않습니다 conv=noerror.

dd이제 이는 블록 장치를 읽는 데에만 유용합니다(왼쪽).dd

오른쪽은 ddssh 프로세스에서 제공하는 파이프에서 데이터를 읽고 있습니다. 이번에도 dd파이프에서 한 번에 512바이트를 읽습니다. 크기가 512의 배수가 아닌 청크로 출력이 기록 되지 않으면 ssh어떻게 되나요 ? 그런 다음 dd파이프에서 불완전한 512개 블록을 읽고 conv=sync이를 채워 zeros압축 파일을 손상시킬 수 있습니다.

여기서 원하는 것은 다음과 같습니다.

ssh -c blowfish user@ip-or-hostname "dd if=/dev/sda1 conv=sync,noerror |
  gzip -1" > sda1.gz

또는 압축이 좋지 않더라도 더 빠르고 바닥글에 최소한 4GB 이상의 압축되지 않은 크기를 기록할 수 있는 방법을 lzop대신 사용하세요.gzip

관련 정보