크기가 전달한 블록 크기의 배수인지 여부에 관계없이 전체 출력 장치가 지워 dd
집니다.
notrunc
디바이스 파일을 절단하는 것은 아무런 영향을 미치지 않기 때문에, 출력은, 디바이스 파일 인 경우 플래그는 아무런 효과가 없다. 출력이 일반 파일 인 경우, 쓰기 전에 출력 파일이 잘리지 않는 효과가 있습니다. 이는 일부 파일 시스템에서 기존 데이터를 덮어 씁니다 (새 데이터 블록을 작성하고 나머지는 첨부하지 않은 상태). 그러나이 속성이 모든 파일 시스템에서 보장되는 것은 아니기 때문에 명령이 파일을 덮어 쓸뿐만 아니라 출력 디스크가 채워질 때까지 (또는 다른 오류가 발생할 때까지) 계속 쓰기 때문에 유용하지 않습니다.
dd
사용하고 올바르게 사용하고 있는지에 대해 걱정 하는 대신 (이 경우에는 작동하지만 복잡 하고 때로는 작동하지 않습니다 ) 그냥 사용하십시오cat
.
cat /dev/zero >/dev/sdX
웹에 대한 대중의 믿음에도 불구하고 dd
, 디스크 쓰기에 더 적합한 마법은 전혀 없습니다 . 마법은 /dev
파일에 있습니다. 같은 현대의 바이너리 데이터에 대처할 수있는 모든 도구 cat
또는 head
같은 일을 할 수있는, dd
당신과 같은 플래그를 전달하는 않는 seek
나 skip
.
문제가에 의해 공유 주 dd
및 cat
성공적인 운영에 그입니다, 그들은 "장치에 남아있는 공간이 없습니다"(ENOSPC) 함께 오류가 있습니다. 이것을 스크립트에 넣으면 오류가 ENOSPC인지 확인하거나 다른 방법을 사용해야합니다. 보다 안정적인 방법은 먼저 장치의 크기를 결정하고 (예 : /proc/partitions
Linux에서 사용)와 같은 도구를 사용하여 정확한 바이트 수를 정확하게 작성하는 것 head
입니다.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX