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