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

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

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을 원하는 바이트 수로 바꿉니다.