dd 명령의 bs 옵션은 디스크 끝에 있습니다.

dd 명령의 bs 옵션은 디스크 끝에 있습니다.

dd다음 명령을 사용한다면 :

dd if=/dev/zero of=/dev/sdX bs=16M

디스크 끝이 정확히 16M의 배수가 아니면 어떻게 되나요? 이는 디스크의 마지막 남은 부분이 0으로 설정되지 않았음을 의미합니까?

나는 알아 차렸다https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/, 그는 미국 정부가 사용한다고 썼습니다.

dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc

이 옵션은 conv=notrunc마지막 바이트가 지워졌는지 확인하는 방법입니까?

답변1

dd출력 장치의 크기가 전달한 블록 크기의 배수인지 여부에 관계없이 전체 출력 장치가 지워집니다.

출력이 장치 파일인 경우 notrunc장치 파일을 자르는 것은 효과가 없으므로 이 플래그는 효과가 없습니다. 출력이 일반 파일인 경우 출력 파일은 쓰기 전에 잘리지 않습니다. 이는 일부 파일 시스템에서 (새 데이터 블록을 쓰고 나머지를 유지하는 대신) 이전 데이터를 덮어쓰는 것을 의미하지만 이는 작동하지 않습니다. 모든 파일 시스템이 이 속성을 보장하는 것은 아니며 명령은 파일을 덮어쓸 뿐만 아니라 출력 디스크가 채워질 때까지(또는 다른 오류가 발생할 때까지) 계속해서 쓰기 때문입니다.

사용하지 말고 dd올바르게 사용하는 것에 대해 걱정하지 마십시오. (공교롭게도 이 특별한 경우에는 작동하지만복잡해그리고때로는 작동하지 않습니다),그냥 사용cat.

cat /dev/zero >/dev/sdX

dd웹상의 대중적인 믿음에도 불구하고 디스크 쓰기를 더 좋게 만드는 마법은 전혀 없습니다 . 마법은 /dev파일에 있습니다. 또는 같은 플래그를 전달하지 않는 한 바이너리 데이터(예: 최신 cat또는 head)를 처리할 수 있는 모든 도구는 동일한 작업을 수행합니다 .ddseekskip

dd일반적인 문제는 cat작업이 성공한 후 "장치에 남은 공간 없음"(ENOSPC)이 잘못 표시된다는 것입니다. 이를 스크립트에 넣으면 오류가 ENOSPC인지 확인하거나 다른 접근 방식을 사용해야 합니다. 보다 안정적인 접근 방식은 먼저 장치의 크기를 결정한 다음( /proc/partitions예를 들어 Linux에서 사용되는 것처럼) 정확한 바이트 수를 쓰는 것과 같은 도구를 사용하는 것입니다 head.

size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX

답변2

문제 없습니다. 입력이 부족하거나 제한적 이거나 다른 문제(예: 불량 섹터, 불량 케이블 등)가 발생 하지 않는 한 ddlast( )에 씁니다 .No space left on devicecount=x

전체 블록 장치를 덮는 것이 목표라면 shred사용하기가 더 쉽습니다 .

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

또는cryptsetup검증 단계가 있는 무작위 데이터의 경우(0은 무작위 데이터로 암호화되고 무작위 데이터는 다시 0으로 해독됩니다).

또는blkdiscardSSD의 경우.

또는wipefs드라이브에 저장된 모든 것을 강제로 삭제하는 대신 처음부터 시작하는 경우에만 가능합니다.

관련 정보