답변:
dd if=/dev/zero of=upload_test bs=file_size count=1
어디를 file_size
바이트 단위 테스트 파일의 크기
dd
값이 2 ^ 32로 제한되어 있으므로 4GB보다 큰 파일을 만들려면 속임수가 dd if=/dev/zero of=test bs=1M count=<size in megabytes>
있습니다.
현대는 더 쉽고 빠릅니다. Linux에서 (하나 선택)
truncate -s 10G foo
fallocate -l 5G bar
그것은 필요가 있음을 언급 할 truncate
파일 시스템에 지원 스파 스 파일 스파 스 파일을 만들 것입니다 fallocate
하지 않습니다. 스파 스 파일은 파일을 구성하는 할당 단위가 실제로 사용될 때까지 할당 되지 않는 파일 입니다. 파일에 대한 메타 데이터는 것입니다 그러나 일부 상당한 공간이 있지만, 가능성이없는 경우 파일의 실제 크기 근처를 차지합니다. 이 유형의 파일에는 장단점이 있으므로 자세한 정보는 스파 스 파일에 대한 리소스를 참조하십시오. 스파 스가 아닌 파일에는 미리 할당 된 블록 (할당 단위)이 있으므로 파일 시스템이 보는 한 공간이 예약됩니다. 또한 fallocate
도 truncate
지정된 값으로 파일의 내용을 설정하지 않습니다 같은 dd
대신 파일의 내용을 할당 fallocate
하거나 truncate
생성하는 동안 상기 할당 유닛에 존재하고이 동작 또는 소망되지 않을 수있는 쓰레기 값일 수있다. 는 dd
그것의 명령 행 옵션으로 지정된 실제로 전체 파일 스트림에 데이터의 값 또는 덩어리를 기록하기 때문에 가장 느린이다.
이 동작은 사용 된 파일 시스템 및 해당 파일 시스템이 표준 또는 사양에 맞는지에 따라 달라질 수 있습니다. 따라서 적절한 방법이 사용되도록 적절한 연구를 수행하는 것이 좋습니다.
truncate
. 위의 구문을 사용하여 크기가 0 인 파일을 생성했습니다. 에 대한 'man page' fallocate
는 그것이 생성하는 파일 space
이 데이터가 아니라 비어 있다고 말합니다 . "1G 파일을 복사하는 데 시간이 얼마나 걸리는가"와 같은 일부 예상되는 경우에는 유용하지 않은 것으로 보입니다.
brew install coreutils
.. 명령 앞에 g 가 추가 되므로 다음과 같이 실행해야합니다 gtruncate -s 10G foo
. 도움이 되었기를 바랍니다!
NTFS
파티션에서 작동하지 않는 것 같습니다 .
Tom의 게시물 을 추적하기 위해 dd를 사용하여 스파 스 파일을 만들 수도 있습니다.
dd if=/dev/zero of=the_file bs=1 count=0 seek=12345
이렇게하면 대부분의 유닉스에서 "구멍"이있는 파일이 만들어집니다. 데이터는 실제로 디스크에 기록되지 않거나 0 이외의 것이 기록 될 때까지 공간을 차지하지 않습니다.
count=0
, bs * seek
파일 크기가 됨
이 명령을 사용하십시오 :
dd if = $ INPUT-FILE of = $ OUTPUT-FILE bs = $ BLOCK-SIZE count = $ NUM-BLOCKS
큰 (빈) 파일을 만들려면을 설정하십시오 $INPUT-FILE=/dev/zero
.
파일의 전체 크기는입니다 $BLOCK-SIZE * $NUM-BLOCKS
.
생성 된 새 파일은입니다 $OUTPUT-FILE
.
프로그래밍 방식으로 수행 할 수 있습니다.
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main() {
int fd = creat("/tmp/foo.txt", 0644);
ftruncate(fd, SIZE_IN_BYTES);
close(fd);
return 0;
}
이 방법은 파일을 메모리에 mmap 하는 데 특히 유용합니다 .
다음 명령을 사용하여 파일의 크기가 올바른지 확인하십시오.
# du -B1 --apparent-size /tmp/foo.txt
조심해:
# du /tmp/foo.txt
파일 시스템에서 지원하는 경우 Sparse 파일 로 할당되므로 0을 인쇄 합니다.
이 답변 중 일부는 /dev/zero
데이터 소스로 사용 하고 있습니다. 응용 프로그램은 압축, 제로의 찜질의 전체 파일하고있는 경우 테스트 네트워크 업로드 속도 있다면, 이것은 좋은 생각하지 않을 수 있습니다 정말 잘. 이 명령을 사용하여 파일 생성
dd if=/dev/zero of=upload_test bs=10000 count=1
upload_test
약 200 바이트로 압축 할 수 있습니다. 따라서 10KB 파일을 업로드한다고 생각하지만 실제로는 훨씬 적은 상황에 처할 수 있습니다.
내가 제안하는 것은 /dev/urandom
대신 사용하는 것입니다 /dev/zero
. 나는 출력을 전혀 압축하지 못했습니다 /dev/urandom
.
/dev/zero
때문에 /dev/urandom
좋습니다.
많은 답변이 있지만, 다른 무엇을 할 수 있는지 잘 설명하지 못했습니다. dd 에 대한 매뉴얼 페이지를 살펴보면 파일 크기를 더 잘 지정할 수 있습니다.
이것은 20 메가 바이트 크기의 0으로 채워진 /tmp/zero_big_data_file.bin을 만들 것입니다.
dd if=/dev/zero of=/tmp/zero_big_data_file.bin bs=1M count=20
이것은 1000 바이트의 크기로 0으로 채워진 /tmp/zero_1000bytes_data_file.bin을 만듭니다.
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1kB count=1
또는
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1000 count=1
쉘 명령으로 :
< /dev/zero head -c 1048576 > output
fallocate
디스크를 기다리지 않으려면 사용하십시오 .
예:
fallocate -l 100G BigFile
용법:
Usage:
fallocate [options] <filename>
Preallocate space to, or deallocate space from a file.
Options:
-c, --collapse-range remove a range from the file
-d, --dig-holes detect zeroes and replace with holes
-i, --insert-range insert a hole at range, shifting existing data
-l, --length <num> length for range operations, in bytes
-n, --keep-size maintain the apparent size of the file
-o, --offset <num> offset for range operations, in bytes
-p, --punch-hole replace a range with a hole (implies -n)
-z, --zero-range zero and ensure allocation of a range
-x, --posix use posix_fallocate(3) instead of fallocate(2)
-v, --verbose verbose mode
-h, --help display this help
-V, --version display version