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


5 Answers

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

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

스파 스 파일을 지원하는 파일 시스템에서 truncate fallocate 사용하면 스파 스 파일이 만들어지고 fallocate 은 생성되지 않습니다. 스파 스 (sparse) 파일은 파일을 구성하는 할당 단위가 사용될 때까지 실제로 할당되지 않은 파일입니다. 그러나 파일에 대한 메타 데이터는 상당한 공간을 차지하지만 파일의 실제 크기 근처에는 없을 것입니다. 이 유형의 파일에 장단점이 있으므로 자세한 내용은 스파 스 파일에 대한 리소스를 참조해야합니다. 비 스파 스 (sparse)가 아닌 파일은 블록 (할당 단위)이 미리 할당되어 있으므로 파일 시스템에서 볼 수있는 공간만큼 공간을 예약합니다. 또한 fallocatetruncate 는 파일의 내용을 dd 와 같은 지정된 값으로 설정하지 않습니다. 대신 fallocate 또는 truncate 할당 된 파일의 내용은 생성 중에 할당 된 단위에 존재하는 모든 휴지통 값이 될 수 fallocate 동작은 그렇지 않을 수도 있습니다 원한다. dd 는 명령 행 옵션으로 지정된대로 전체 파일 스트림에 데이터 값 또는 덩어리를 실제로 기록하기 때문에 가장 느립니다.

이 동작은 사용되는 파일 시스템 및 해당 파일 시스템과 표준 또는 사양의 일치 여부에 따라 달라질 수 있습니다. 따라서 적절한 방법을 사용하기 위해 적절한 조사가 이루어져야 함을 권고합니다.

Question

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

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




이 중 일부는 데이터 소스에 /dev/zero 를 사용하고 있습니다. 테스트 네트워크가 속도를 업로드하는 경우 응용 프로그램이 압축을 수행하는 경우 가장 좋은 아이디어가 아닐 수 있습니다. 파일이 0으로 가득 차면 압축 잘됩니다. 이 명령을 사용하여 파일 생성

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

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

내가 제안하는 것은 /dev/zero 대신에 /dev/zero /dev/urandom 사용하는 것이다. 나는 /dev/urandom 의 결과를 전혀 압축 할 수 없었다.




프로그래밍 방식으로 수행 할 수 있습니다.

#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

파일 시스템이 지원하는 경우 스파 스 파일 로 할당되므로 아마 0을 인쇄합니다.

또한보십시오 : 남자 2 열리고 남자 2 자름




이 명령을 사용하십시오 :

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

큰 (빈) 파일을 만들려면 $INPUT-FILE=/dev/zero .
파일의 전체 크기는 $BLOCK-SIZE * $NUM-BLOCKS 입니다.
새로 생성 된 파일은 $OUTPUT-FILE 입니다.




쉘 명령으로 :

< /dev/zero head -c 1048576 >  output



이렇게하면 현재 디렉토리에 임의 문자가있는 4MB 텍스트 파일이 생성되고 이름은 "4mb.txt"가됩니다. 매개 변수를 변경하여 크기와 이름을 다르게 지정할 수 있습니다.

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


Related