테스트 목적으로 (업로드 제한을 테스트하기 위해) 특정 크기의 파일을 생성해야합니다.
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
하지 않습니다. 스파 스 파일은 파일을 구성하는 할당 단위가 실제로 사용될 때까지 할당 되지 않는 파일 입니다. 파일에 대한 메타 데이터는 것입니다 그러나 일부 상당한 공간이 있지만, 가능성이없는 경우 파일의 실제 크기 근처를 차지합니다. 이 유형의 파일에는 장단점이 있으므로 자세한 정보는 스파 스 파일에 대한 리소스를 참조하십시오. 스파 스가 아닌 파일에는 미리 할당 된 블록 (할당 단위)이 있으므로 파일 시스템이 보는 한 공간이 예약됩니다. 또한 fallocate
도 truncate
지정된 값으로 파일의 내용을 설정하지 않습니다 같은 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
답변
이 명령을 사용하십시오 :
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을 인쇄 합니다.
답변
당신은 할 수 있습니다 :
[dsm@localhost:~]$ perl -e 'print "\0" x 100' > filename.ext
100을 원하는 바이트 수로 바꿉니다.