IT

리눅스에서 주어진 크기로 파일을 만드는 방법?

lottoking 2020. 6. 19. 07:57
반응형

리눅스에서 주어진 크기로 파일을 만드는 방법?


테스트 목적으로 (업로드 제한을 테스트하기 위해) 특정 크기의 파일을 생성해야합니다.

Linux에서 특정 크기의 파일을 작성하는 명령은 무엇입니까?


dd if=/dev/zero of=upload_test bs=file_size count=1

어디를 file_size바이트 단위 테스트 파일의 크기


현대는 더 쉽고 빠릅니다. Linux에서 (하나 선택)

truncate -s 10G foo
fallocate -l 5G bar

그것은 필요가 있음을 언급 할 truncate파일 시스템에 지원 스파 스 파일 스파 스 파일을 만들 것입니다 fallocate하지 않습니다. 스파 스 파일은 파일을 구성하는 할당 단위가 실제로 사용될 때까지 할당 되지 않는 파일 입니다. 파일에 대한 메타 데이터는 것입니다 그러나 일부 상당한 공간이 있지만, 가능성이없는 경우 파일의 실제 크기 근처를 차지합니다. 이 유형의 파일에는 장단점이 있으므로 자세한 정보는 스파 스 파일에 대한 리소스를 참조하십시오. 스파 스가 아닌 파일에는 미리 할당 된 블록 (할당 단위)이 있으므로 파일 시스템이 보는 한 공간이 예약됩니다. 또한 fallocatetruncate지정된 값으로 파일의 내용을 설정하지 않습니다 같은 dd대신 파일의 내용을 할당 fallocate하거나 truncate생성하는 동안 상기 할당 유닛에 존재하고이 동작 또는 소망되지 않을 수있는 쓰레기 값일 수있다. dd그것의 명령 행 옵션으로 지정된 실제로 전체 파일 스트림에 데이터의 값 또는 덩어리를 기록하기 때문에 가장 느린이다.

이 동작은 사용 된 파일 시스템 및 해당 파일 시스템이 표준 또는 사양에 맞는지에 따라 달라질 수 있습니다. 따라서 적절한 방법이 사용되도록 적절한 연구를 수행하는 것이 좋습니다.


Tom의 게시물 을 추적하기 위해 dd를 사용하여 스파 스 파일을 만들 수도 있습니다.

dd if=/dev/zero of=the_file bs=1 count=0 seek=12345

이것은 대부분의 유닉스에서 "구멍"이있는 파일을 생성합니다. 데이터는 실제로 디스크에 기록되지 않거나 0 이외의 것이 기록 될 때까지 공간을 차지하지 않습니다.


OSX (및 Solaris)에서이 mkfile명령도 사용할 수 있습니다.

mkfile 10g big_file

"big_file"이라는 10GB 파일이 만들어집니다. 이 방법을 여기 에서 찾았 습니다.


이 명령을 사용하십시오 :

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을 인쇄 합니다.

참조 : 남자 2 열림남자 2 자르기


당신은 할 수 있습니다 :

[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext

100을 원하는 바이트 수로 바꿉니다.


이 답변 중 일부는 /dev/zero데이터 소스로 사용 하고 있습니다. 테스트 네트워크 업로드 속도가 빠르면 응용 프로그램에서 압축을 수행하는 경우 이것이 최선의 아이디어가 아닐 수 있습니다. 0으로 가득 찬 파일은 실제로압축 됩니다. 이 명령을 사용하여 파일 생성

 dd if=/dev/zero of=upload_test bs=10000 count=1

upload_test약 200 바이트로 압축 할 수 있습니다. 따라서 10KB 파일을 업로드한다고 생각하지만 실제로는 훨씬 적은 상황에 처할 수 있습니다.

What I suggest is using /dev/urandom instead of /dev/zero. I couldn't compress the output of /dev/urandom very much at all.


dd if=/dev/zero of=my_file.txt count=12345

As shell command:

< /dev/zero head -c 1048576 >  output

There are lots of answers, but none explained nicely what else can be done. Looking into man pages for dd, it is possible to better specify the size of a file.

This is going to create /tmp/zero_big_data_file.bin filled with zeros, that has size of 20 megabytes :

    dd if=/dev/zero of=/tmp/zero_big_data_file.bin  bs=1M count=20

This is going to create /tmp/zero_1000bytes_data_file.bin filled with zeros, that has size of 1000 bytes :

    dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin  bs=1kB count=1

or

    dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin  bs=1000 count=1

  • In all examples, bs is block size, and count is number of blocks
  • BLOCKS and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

This will generate 4 MB text file with random characters in current directory and its name "4mb.txt" You can change parameters to generate different sizes and names.

base64 /dev/urandom | head -c 4000000 > 4mb.txt

참고URL : https://stackoverflow.com/questions/139261/how-to-create-a-file-with-a-given-size-in-linux

반응형