할 것이다
dd if=/dev/zero of=somepartition bs=512
또한 somepartition
종료 후 파티션을 지우 거나 종료 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
파티션에 대해서는 아무것도 모른다.
dd
원시 파티션에 쓰는 데 사용할 수 없습니다 . 파일에만 쓸 수 있습니다. 당신은 할 수있는 블록 장치 파일에 코스 쓰기의 대표 파티션을 (예 /dev/sda1
),하지만 당신은 원시 파티션에 쓸 수 없습니다. 그리고 파티션 을 나타내는 파일에만 쓸 수 있기 때문에 파일은 파티션과 끝을 지나는 비트가 아니라 파티션 만 나타내므로 파티션 끝을 지나쳐 쓸 수 없습니다.
/dev/sda
텍스트 편집기에서 열고 데이터를 변경할 dd
수 있으며 파티션에 액세스 할 수 있다는 점에서 다른 프로그램과 다릅니다. 아주 좋은 답변입니다!
버그가없는 블록 장치 드라이버에서도 이러한 상황이 발생할 수 있지만 위험하지만 드문 특수 시나리오가 있습니다.
실수를 한 것처럼 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
그러나 수행중인 작업에 따라 대체 도구를 사용하여 파일을 안전하게 삭제할 수 있습니다. 안전한 방법으로 파일을 삭제하는 방법을 참조하십시오 . 옵션.
dd
는 그렇게 낮은 수준이 아닙니다. 실제로 사람들이 사용하는 대부분의 dd
작업은와 동일하게 수행 될 수 있습니다 cat
. 실제로 기본적으로 cat
사용하는 것보다 더 큰 블록을 사용하기 때문에 약간 더 빠릅니다 dd
. 모든 저수준 코드는 커널에 있습니다. 그리고 드라이버는 정말 당신이 사용하는 경우 상관하지 않는다 dd
나 cat
.
dd if=/dev/zero of=/dev/sda bs=512 count=1
또는 dd if=/dev/zero of=/dev/sda bs=512
예입니다. 두 번째 명령을 사용하면 파티션 테이블을 무시하고 전체 디스크를 작성하고 채 웁니다. 파티션을 지정하면 파티션 dd if=/dev/zero of=/dev/sda1
을 넘어 가지 않습니다. dd로 수행하려는 작업에 따라 다릅니다.
of=somepartition
으로이므로 전체 디스크 장치에 쓰는 경우에는 적용되지 않습니다. dd
장치 드라이버의 제한 사항을 해결할 수 없습니다.
/dev/sda1
커널을 통해 인접 스토리지에 액세스 할 수없는 방식으로 생성됩니다 (커널이 마지막으로 읽은 후에 파티션 테이블이 변경되지 않은 경우). 그런 식으로 인접 스토리지에 액세스 할 수 있으면 큰 버그로 간주됩니다.