미리 결정된 크기의 gzip 파일 생성

미리 결정된 크기의 gzip 파일 생성

application/x-gzip100MB부터 999MB까지 다양한 크기의 콘텐츠 유형 파일 업로드를 테스트하고 싶습니다 .

.gz미리 결정된 크기의 파일을 어떻게 생성합니까 ? 이렇게 하면 dd if=/dev/zero of=somefile bs=1 seek=100일반적으로 압축 후 결과 파일이 매우 작습니다.

답변1

  • 다음과 같이 10MB gzip 파일을 만들 수 있습니다.

    head -c 10M /dev/urandom | gzip -1 >10m.gz
    

    이는 높은 엔트로피 바이트 스트림을 얻는 데 사용됩니다 urandom. 이는 압축할 수 없기 때문에 gzip으로 압축된 버전은 입력과 거의 동일한 크기입니다.

  • 그런 다음 gzip으로 압축된 파일의 복사본을 함께 연결할 수 있습니다.

    cat $(perl -e "print '10m.gz ' x 30") >300m.gz
    

    소스 파일 30개 복사본은 약 300MB, 100개 복사본은 약 1GB입니다.

답변2

또 다른 접근 방식이 있습니다. 루프 변수를 제어하여 파일을 생성할 수 있습니다 filecount. 이렇게 하면 100MB에서 900MB 크기의 임의의 파일이 생성되어 gzip저장됩니다.

#!/bin/bash
filecount=0
while [ $filecount -lt 10 ]
do
filesize=$((RANDOM%9+1))
filesize=$(($filesize*104857600))
</dev/urandom head -c "$filesize" | gzip > /tmp/file${filecount}.$RANDOM.gz
((filecount++))
done

관련 정보