dd가 bs=1G로 34MB 파일을 생성하는 이유는 무엇입니까? [복사]

dd가 bs=1G로 34MB 파일을 생성하는 이유는 무엇입니까? [복사]

명령을 입력할 때:

dd if=/dev/urandom of=outputfile bs=1G count=1

제가 이해한 것이 맞다면 1GB 파일을 받아야 합니다.

그러나 다음 값이 포함된 파일을 받았습니다.

33554431 bytes (34 MB, 32 MiB) copied, 0.27126 s, 124 MB/s

왜 그런 겁니까?

작동하는 시스템에서는 다음을 수신합니다.

1+0 Records in
1+0 Records out

파일 크기는 34MB가 되었으며 다음을 받았습니다.

0+1 Records in
0+1 Records out

답변1

장치는 /dev/urandom일시적으로 0바이트(더 이상 데이터 없음)를 반환합니다. 유틸리티 dd는 이를 EOF로 처리하고 중지합니다. 이렇게 하면 더 많은 임의의 데이터가 생성된다는 것을 알고 있으므로 입력 읽기를 다시 시도하도록 /dev/urandom지시해야 합니다 .dd

dd if=/dev/urandom iflag=fullblock bs=1G count=1

이 플래그는 도구에서 데이터를 읽을 때도 iflag=fullblock필요합니다 (예: 블록 크기가 아닌 단위로 데이터 쓰기).zcat

관련 정보