0 바이트가 많은 테스트 파일 만들기


25

빈 파일을 만드는 방법을 알고 있습니다.

touch /var/tmp/nullbytes

그러나 bash를 사용하여 명령 줄에 null 바이트 만 포함하는 1MB 파일을 어떻게 만들 수 있습니까?



1
+1. 흥미로운 질문입니다. 그러한 파일이 필요한 시나리오에 대해 누군가가 친절하게 설명 할 수 있습니까?
Kent Pawar

1
chkrootkit에서 충돌을 시뮬레이션하기 위해 필요했습니다 : unix.stackexchange.com/questions/86866/…
rubo77

답변:


56

GNU로 truncate:

truncate -s 1M nullbytes

( nullbytes사전에 존재하지 않는다고 가정 ) 1 mebibyte 스파 스 파일을 만듭니다. 그것은 0으로 채워져 있지만 디스크 공간을 차지하지 않는 파일입니다.

없이는 대신 truncate사용할 수 있습니다 dd.

dd bs=1048576 seek=1 of=nullbytes count=0

(일부 dd구현에서는 1048576을로 바꿀 수 있습니다 1M)

Linux 및 일부 파일 시스템 에서 디스크 공간을 할당 하려면 다음을 수행하십시오.

fallocate -l 1M nullbytes

실제로 디스크에 데이터를 쓰지 않고 공간을 할당합니다 (공간은 예약되었지만 초기화되지 않은 것으로 표시됨).

dd < /dev/zero bs=1048576 count=1 > nullbytes

실제로 0을 디스크에 씁니다. 그것은 가장 효율적이지 않지만 파일에 액세스 할 때 드라이브를 회전 해야하는 경우 그것이 원하는 것입니다.

또는 @mikeserv가 ddNUL 바이트 생성 을 속이는 방법 :

dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes

head블록 크기를 지정하지 않아도 되는 GNU의 대안 (1M은 괜찮지 만 10G는 그렇지 않습니다) :

head -c 1M < /dev/zero > nullbytes

또는 진행률 표시 줄을 얻으려면 :

pv -Ss 1M < /dev/zero > nullbytes

truncate스왑 볼륨으로 사용할 빈 파일을 만드는 데 사용하지 마십시오 ... 작동하지 않습니다! dd이 경우 대신 사용하십시오 .
Elias Probst

1
@EliasProbst는 ITYM는 대신은 / dev / 제로 복사 , 스파 스 파일을 사용하지 않습니다 . dd내가 보여주는 것처럼 스파 스 파일을 만들 수 있습니다.
Stéphane Chazelas

2
fallocate는 공간을 확보하고 빠르게 수행하기 때문에 작성하는 가장 빠르고 빠른 방법이지만 아무것도 작성하지 않아도됩니다 ( stackoverflow.com/questions/257844/… )
curratore

... 또는 bs=1kx1k. 또는 <&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file디스크에 리터럴로 쓰는 것. 그러나 읽기 오류를 강제 할 때 얼마나 많은 효율성이 손실 될 수 있는지 100 %는 아닙니다.
mikeserv 2016 년

27
dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.