답변:
사용 truncate
:
truncate -s 14M filename
보낸 사람 man truncate
:
DESCRIPTION
Shrink or extend the size of each FILE to the specified size
[...]
-s, --size=SIZE
set or adjust the file size by SIZE
참고 : truncate
시스템에서 사용하지 못할 수 있습니다 (예 : Mac OS X에서는 기본적으로 설치되지 않음) (예 : macports를 사용하여 쉽게 설치할 수 있음). 이 경우 dd
또는 head
대신 사용해야 할 수도 있습니다 .
touch
하지만, 당신은 간단하게 실행할 수 있습니다 필요하지 않습니다 truncate -s 14M filename
이 생성됩니다 filename
직접.
편집 : 가장 간단한 방법은 아마도 truncate
Ashutosh Vishwa Bandhu의 대답 일 것입니다. 그러나 @ offby1 이 지적한대로 스파 스 파일 을 생성 하여 원하는 파일 이 아닐 수도 있습니다. 아래 솔루션은 정상적인 전체 파일을 만듭니다.
다음 명령은라는 14MB 파일을 만듭니다 foo
.
fallocate
( 의견에 의견을 제안한 @Breakthrough 에게 감사하고 아래에 언급 한 Ahmed Masud의 답변에 투표 하십시오.)
fallocate -l 14000000 foo
이 명령은 truncate
원하는 파일 크기에 관계없이 (즉시 큰) 빠르며 (대용량 파일의 경우 느린 다른 솔루션과 달리) 스파 스 파일이 아닌 일반 파일을 생성하기 때문에 특히 인상적 입니다.
$ truncate -s 14MB foo1.txt
$ fallocate -l 14000000 foo2.txt
$ ls -ls foo?.txt
0 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:54 foo1.txt
13672 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:55 foo2.txt
임의의 데이터로 채워진 파일 만들기
dd if=/dev/urandom of=foo bs=14MB count=1
또는
head -c 14MB /dev/urandom > foo
\0
s로 채워진 파일을 작성하십시오 .
dd if=/dev/zero of=foo.txt bs=14MB count=1
또는
head -c 14MB /dev/zero > foo
다른 파일의 첫 14MB 데이터로 채워진 파일을 작성하십시오.
head -c 14MB bar.txt > foo
다른 파일의 마지막 14MB 데이터로 채워진 파일을 작성하십시오.
tail -c 14MB bar.txt > foo
위의 모든 예에서 파일은 14*1000*1000
원하는 14*1024*1024
경우로 대체 MB
됩니다 M
. 예를 들면 다음과 같습니다.
dd if=/dev/urandom of=foo bs=14M count=1
head -c 14M /dev/zero > foo
fallocate
바이트 단위로만 처리되므로 (14 * 1024 * 1024 = 14680064)
fallocate -l 14680064 foo
dd
더 간단하고 잠재적으로 덜 파괴적인 접근 방법이 있다면 사용하지 않는 것이 좋습니다 .
dd
솔루션에 dd가 아닌 대안이있는 이유 입니다.
dd
위키 페이지 의 명령은 완전히 다르며 사용하지 않습니다 /dev/zero
. 더 논리적 인지 M
또는 MB
더 논리적 인지 는 개발자에게 맡기십시오. head , tail 및 dd 의 맨 페이지에는 모두 "MB = 1000 * 1000, M = 1024 * 1024"라고 명시되어 있습니다. 다른 * nix에서는 다를 수 있습니다.
dd bs=1MB count=14 if=/dev/zero of=<yourfilename>
경고 dd
는 사용자가 임의로 또는 실수로 작성할 수있는 권한을 가진 모든 것을 자동으로 덮어 씁니다 . dd
예를 들어 이해해야 합니다. 독서와 함께 dd --help
, 당신은 당신의 dd 명령 라인을 망치하지 않거나 다른 당신은 쉽게 되돌릴 수없는 데이터 손실을 만들 수 있습니다 - 총도 .
개시 내용 if=
은 IS 입력 파일 과 of=
는 IS 출력 파일 . 명령을 실행하기 전에 항상 올바른지 다시 확인하십시오. :)
마술 사용 dd
;) 맨 페이지
$ dd if=/dev/zero of=output.dat bs=1024 count=14336
14MB * 1024 = 14336KB가 발생하거나
$ dd if=/dev/zero of=output.dat bs=1MB count=14
그리고 14MB output.dat 파일이 0으로 채워집니다. : D
가장 빠른 방법입니다.
SEEK=$SIZE-1
dd if=/dev/zero of=outfile bs=1 seek=$SEEK count=1
그렇지 않으면 정확한 위치를 찾고 단일 바이트를 쓰는 빠르고 더러운 C 또는 perl 프로그램을 작성하십시오. 이것은 실제로 데이터를 블록에 덤프하는 것보다 훨씬 빠릅니다.
스파 스 파일을 피하려면 Linux (및 다른 시스템) fallocate -l <length>
에서 사용할 수 있습니다 util-linux
.
그것이 불가능하고 POSIX 호환 시스템을 가지고 있다면 posix_fallocate () 라이브러리 호출을 사용하여 빠르고 더러운 프로그램을 작성할 수 있습니다. posix_fallocate는 지정된 범위의 할당을 보장하므로 범위가 성공적으로 반환되면 이후에 범위를 사용할 때 디스크가 가득 차지 않게됩니다.
동안은 dd
그것을 할 수있는 휴대용 방법, 명령입니다 mkfile
및 xfs_mkfile
이 목적을 위해 특별히 작성된 빠르다 있습니다 :
mkfile size[b|k|m|g] filename
xfs_mkfile size[b|k|m|g] filename
중요한 것은 어느 명령도 보편적으로 사용할 수 없으므로 이식 가능한 스크립트를 작성하는 데 좋지 않습니다. 그러나 명령 줄을 통해 대화 형으로 수행하는 경우 내가 사용하는 명령입니다.
기본적으로 이들은 채워지지 않은 파일을 생성하고 스파 스 (또는 "홀리") 파일은 생성하지 않습니다 . 둘 다 -n
스파 스 파일을 만드는 옵션을 대신 사용합니다.