dd는 입력/출력된 레코드의 임의 수를 표시합니다.

dd는 입력/출력된 레코드의 임의 수를 표시합니다.

블록 장치에 일부 이미지를 다시 쓰고 있는데 dd이전에 본 적이 없는 매우 이상한 출력이 나타납니다.

# xz -dc goren.img.xz | dd bs=1M of=/dev/storage2/goren
35+2475166 records in
35+2475166 records out
21474836480 bytes (21 GB) copied, 222.912 s, 96.3 MB/s
# xz -dc gronn.img.xz | dd bs=1M of=/dev/storage2/gronn
50+2413782 records in
50+2413782 records out
21474836480 bytes (21 GB) copied, 233.478 s, 92.0 MB/s
# xz -dc grummle.img.xz | dd bs=1M of=/dev/storage2/grummle
63+2443466 records in
63+2443466 records out
21474836480 bytes (21 GB) copied, 222.898 s, 96.3 MB/s
# xz -dc hozen.img.xz | dd bs=1M of=/dev/storage2/hozen
19+2556787 records in
19+2556787 records out
21474836480 bytes (21 GB) copied, 250.989 s, 85.6 MB/s

각 경우에 표시될 것으로 예상되는 출력(및 이미지 파일을 생성할 때 얻는 출력)은 다음과 같습니다.

20480+0 records in
20480+0 records out

내가 알 수 있는 한, 표시되는 레코드 수가 걱정되지만 이미지가 올바르게 작성되었습니다. 이는 어떤 상황에서도 분명히 올바르지 않습니다. 그러나 내가 말했듯이 작성된 이미지는 원본 이미지와 일치하고 파일 시스템 검사 등을 통과합니다.

저는 Fedora 21 x86_64와 coreutils 8.22를 사용하고 있습니다.

답변1

이는 불완전한 읽기입니다. . 을 추가하면 iflag=fullblock사라집니다.

기본적으로 dd더 이상 데이터를 사용할 수 없으면 파이프라인의 더 작은 청크가 허용됩니다. iflag를 사용하면 dd전체 데이터 블록이 수집되거나 EOF될 때까지 기다립니다.

데이터 일관성에 관해서는 문제가 없어야 하므로 어느 쪽이든 올바른 결과를 얻어야 합니다.

문제는 를 사용하는 이유입니다 dd. 예를 다음과 같이 단순화할 수도 있습니다.

xz -dc goren.img.xz > /dev/storage2/goren

관련 정보