갑자기 파티션(또는 하나의 파티션)에 문제가 발생했습니다. Kingston SSD에 기본 Ubuntu가 설치되어 있으며 루트 파일 시스템은 LUKS(AES라고 생각합니다)를 사용하여 암호화되었습니다. 이제 라이브 CD에서 파티션을 마운트하려고 시도했지만 성공하지 못했습니다.
돌이킬 수 없는 추가 피해를 입힐까봐 두려웠습니다. 그래서 하나 만들어볼까정확한 사본운전하다. 이는 모든 분할된 테이블, LUKS 파티션 및 내가 인식하지 못하는 기타 모든 종류의 메타데이터에 대한 모든 종류의 메타데이터를 의미합니다. 나는 또한 모든 빈 블록을 원하고 절대적으로 안전하다고 생각합니다.
알고 있지만 dd if=/dev/sda of=/dev/sdb
설명된 데이터가 모두 포함되어 있는지는 모르겠습니다.
어쩌면 블록 크기를 로 지정해야 할 수도 있지만 -b
그것이 어떻게 작동하는지, 왜 필요한지 이해하지 못합니다(그렇다면). 그리고 파티션의 블록 크기를 찾는 방법도 모르겠습니다.
복사하면 말해주세요모두그렇지 않은 경우 데이터에는 다른 방법이 있습니다.
답변1
예, (공식적으로) 데이터와 파티션, UUID 등에 대한 모든 정보를 포함하지 않는 청크도 마찬가지입니다.
예를 들어, dd 복사된 드라이브에서 데이터를 복구할 수 있습니다(즉, 파일 삭제 후).
당신은 읽고 싶을 수도 있습니다이것정보 noerror
및 sync
옵션.
읽기 오류가 없는 한 블록 크기( bs=
)는 결과에 영향을 미치지 않지만 "1M"(또는 최소한 "4k")로 설정해야 합니다. 그렇지 않으면 아무 이유 없이 시간이 더 오래 걸립니다.
답변2
그냥 해:
cp /dev/block_device imgfile
만약에imgfile
이러한 것들을 이해하는 파일 시스템인 GNU에 있을 것입니다.cp
~해야 한다기본값은 이미지를 드물게 쓰는 것입니다. 그러나 다음과 같은 기본 설정을 지정할 수 있습니다.
cp --sparse=always /dev/sda imgfile
dd
의 주요 용도는 지정된 것만 안정적으로 사용하는 능력입니다.부분또는 스트림에 특정 변환을 매우 효율적으로 적용할 수 있습니다. 1:1 복사를 원하시면모두파일이면 그게 cp
다입니다.
답변3
dd
복사하는 데이터가 무엇을 의미하는지 상관하지 않습니다. 파티션 테이블, 파티션 내용, 파일 조각, 빈 파일 시스템 공간은 모두 바이트입니다. 최소한 크기가 크면 정확한 복사본이 만들어집니다(더 큰 경우 직접 액세스할 수 없는 일부 꼬리 쓰레기 포함 dd if=/dev/sda of=/dev/sdb
) ./dev/sdb
/dev/sda
sdb
sda
sdb
모든 마법은 sdX
블록 장치에 있습니다. dd
바이트를 복사하는 도구일 뿐입니다.
dd
그러나 이것이 작업에 가장 적합한 도구라는 의미는 아닙니다 . 약간 오류가 발생하기 쉽고 일반적으로 가장 빠른 작업은 아닙니다. 내가 찾은cat
서로 다른 디스크 간 복사 시 더 빨라짐.dd
직관적이지 않은 방식으로 데이터가 손실될 수 있습니다.(비록 나는생각하다최신 Linux 시스템은 이와 관련하여 안전합니다.) 를 사용하면 오타(예: swap sums ) cat
로 인한 데이터 손상 위험이 줄어든다는 추가 이점이 있습니다 . 출력은 익숙한 셸 리디렉션 연산자를 통해 지정됩니다( 그런데 이 구문을 사용할 수도 있습니다).if
of
dd
cat /dev/sda >/dev/sdb
다른 디스크가 더 큰 경우 파일에 디스크 이미지를 만들 수 있습니다.
cat /dev/sda >/path/to/disk.img
이러한 디스크 이미지는 직접 사용할 수 없으며 부팅할 수도 없습니다. 그러나 이를 다시 디스크에 복사하면 전체 콘텐츠가 두 번 복사되므로 원본 콘텐츠의 바이트 단위 복사본이 생성됩니다. 당신은 또한루프백 설치파일에 액세스합니다. 파티션으로 루프 장치를 만들 수 있지만Ubuntu는 최신 버전에서만 이 목적을 위한 도구를 제공합니다.. 데이터만 유지하려면 파티션을 개별적으로 복사하여 별도의 파일에 저장하면 충분합니다.