인접한 파티션을 덮어 쓸 수 있음 것이다 dd if=/dev/zero of=somepartition bs=512 또한 somepartition종료 후

할 것이다

dd if=/dev/zero of=somepartition bs=512

또한 somepartition종료 후 파티션을 지우 거나 종료 somepartition합니까?



답변

파티션을 덮어 쓰기 dd

dd매우 강력하지만 위험한 도구입니다. 질문없이 무엇을하라고 지시합니까? 따라서 가족 사진을 지우라고하면 사소한 타이핑 오류입니다.

그러나 확인하고 다시 확인하면 사용할 수 있습니다.

dd if=/dev/zero of=somepartition bs=512

또는 나는 제안 할 것이다

dd if=/dev/zero of=/dev/sdxn bs=4096

여기서 x드라이브 문자 n는 파티션 번호이며 블록 크기는 4096 바이트이며 쓰기 프로세스가 더 빠릅니다.

이 경우 파티션쓰는 것이 중요합니다 . 전체 드라이브 (드라이브 헤드 엔드) /dev/sdx에 쓰면 전체 드라이브를 덮어 씁니다. 그러나 파티션 쓰기는 파티션 끝에서 중단되며 그 뒤에있는 파티션은 보존됩니다. ( 지금 Lubuntu 16.04 LTS의 USB 펜 드라이브에서 테스트 했으므로 그 방식으로 작동합니다.)

확장 파티션에 대한 예외

확장 파티션 (MSDOS 파티션 테이블에 4 개 이상의 파티션을 갖기 위해 논리 파티션의 컨테이너)에 대한 예외가 있습니다. 이것은 다음 링크에 설명되어 있습니다.

dd를 사용하여 ‘확장’파티션 이미지를 만들 수 있습니까?

그러나 또 다른 문제가 있습니다. 테스트 환경에서 명령을 테스트했으며 확장 파티션의 이미지를 만들고 싶을 때 dd는 1 킬로바이트 (1024 바이트) 만 읽었습니다.

나는 이것을 Lubuntu 16.04 LTS의 USB pendrive에서 테스트했으며, 이는 글쓰기뿐만 아니라 읽기에도 적용됩니다. 첫 번째 키비 바이트 만 덮어 씁니다.

요약하면 기본 파티션 및 논리 파티션 덮어 쓰기는이 답변의 주요 설명에 따라 작동합니다. 그러나 첫 번째 kibibyte 만 겹쳐 쓰므로 확장 파티션을 겹쳐 쓰려면이 방법을 사용하지 마십시오. 확장 파티션의 논리 파티션은 더 이상 파티션 테이블을 통해 찾을 수 없지만 여기에 저장된 데이터는 여전히 존재합니다.


답변

파티션 장치에 쓰면 해당 파티션 외부에 dd 또는 다른 어떤 것도 쓰지 않습니다. 단일 파티션 외부에서 영향을 미치려면 전체 디스크 장치를 사용해야합니다.

(주의 : 디스크에 파티션이 겹치는 파티션 테이블이 없으면 절대로 발생하지 않아야합니다.)


답변

귀하의 질문은 dd(그리고 일반적으로 Unix와 같은 운영 체제) 작동 방식에 대한 근본적인 오해에 기초하고 있다고 생각합니다 .

dd하지 덮어 쓰기 인접한 파티션, 단순히 때문에 수 dd수 없습니다 덮어 쓰기 파티션, 기간은 .

dd단순히 파일에 씁니다 . 그게 다야.

이제 경우에 당신이 통과 dd나타내는 파일 에 여러 파티션을 다음 dd덮어 쓰게됩니다 해당 파일을 . 그러나이 경우 dd파티션의 끝을 지나쳐 쓰지 않습니다 . dd파일의 끝까지, 그리고 파일 의 끝까지 쓸 것 입니다.

그러나 dd하나의 파티션 만 나타내는 파일을 전달 하면 dd이 파티션의 끝을 지나서 쓰지 않습니다. 다시, 이것은와 관련이 없습니다 dd. dd단순히 파일에 쓰도록 지시합니다. 이 파일이 단일 파티션을 나타내는 사실은 (이 경우) 커널의 블록 장치 드라이버에 의해 보장됩니다. dd그것과 관련이 없습니다.

즉, dd파일에 씁니다. 이 파일들이 나타내는 것은 dd걱정할 것이 없습니다 . dd파티션에 대해서는 아무것도 모른다.


답변

버그가없는 블록 장치 드라이버에서도 이러한 상황이 발생할 수 있지만 위험하지만 드문 특수 시나리오가 있습니다.

  • 디스크의 파티션 테이블은 파티션 x가 이전보다 낮은 경계에서 끝나도록 크기가 조정되는 방식으로 변경됩니다. 뒤에있는 파티션 y는 아래쪽 경계에서 시작 크기가 조정되거나 새 파티션 y가 공간에 추가됩니다.
  • 파티션 y는 파티션 테이블과 독립적 인 방법으로 관련 데이터로 채워집니다 (예 : 전체 디스크 블록 장치에서 건너 뛰기 / 카운트 옵션과 함께 dd 사용 (예 : / dev / sda)).
  • 커널에게 파티션 테이블을 다시 읽도록 지시하는 ioctl이 발행되지 않거나 사용중인 장치로 인해 실패
  • 파티션 x는 오류 조건에 도달 할 때까지 쓰기를 시도하는 모든 프로세스에 의해 기록됩니다.

답변

실수를 한 것처럼 dd에주의해야합니다. dd를 사용하는 것보다 더 많은 것을 덮어 쓸 수 있으며 dd를 사용하는 대상에 따라 다릅니다 (OP는 dd를 사용하는 데있어 모호하고 dd의 정확한 구문에 대해 모호했습니다) 명령).

파티션 을 지정 하면 파티션이 가득 찰 때까지 해당 파티션에 씁니다.

실수로 전체 드라이브 (예 : = / dev / sda)를 넣으면 dd는 전체 드라이브 시작에 기록하여 파티션 테이블 무시 (및 덮어 쓰기)를 완료합니다.

또한 파티션에서 dd를 사용하여 삭제 된 파일을 덮어 쓸 수 있습니다 (삭제 된 파일은 파티션에 남아있을 수 있으며 파일을 덮어 쓸 때까지 여러 가지 성공률로 다양한 복구 도구에 의해 발견 될 수 있습니다.이 경우 dd를 사용하여 여유 공간을 채울 수 있음) 파일에 쓰기.

dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file

그러나 수행중인 작업에 따라 대체 도구를 사용하여 파일을 안전하게 삭제할 수 있습니다. 안전한 방법으로 파일을 삭제하는 방법을 참조하십시오 . 옵션.