テストのために、特定のサイズのファイルを生成する必要があります(アップロード制限をテストするため)。
Linuxで特定のサイズのファイルを作成するコマンドとは何ですか?
dd if=/dev/zero of=upload_test bs=file_size count=1
file_size
は、テストファイルのサイズ(バイト単位)です。
モダンは簡単で高速です。 Linuxの場合(1つを選択)
truncate -s 10G foo
fallocate -l 5G bar
必要スパースファイルをサポートするファイルシステム上のtruncate
はスパースファイルを作成し、fallocate
は作成しません。スパースファイルとは、ファイルを構成する割り当て単位が、使用されるまで実際に割り当てられないファイルです。ただし、ファイルのメタデータwillはかなりのスペースを占有しますが、ファイルの実際のサイズに近い場所はほとんどありません。このタイプのファイルには長所と短所があるため、詳細についてはスパースファイルに関するリソースを参照してください。非スパースファイルには、事前にブロック(割り当て単位)が割り当てられています。つまり、ファイルシステムが見る限り、スペースは予約されています。また、fallocate
もtruncate
も、ファイルの内容を指定された値に設定しませんlikedd
、代わりにfallocate
またはtruncate
で割り当てられたファイルの内容は、作成中に割り当てられたユニットに存在するごみ箱の値である場合がありますこの動作は望ましい場合と望ましくない場合があります。 dd
は、コマンドラインオプションで指定されたとおりに、ファイルストリーム全体に値またはデータのチャンクを実際に書き込むため、最も低速です。
この動作は潜在的に異なる可能性があります-使用するファイルシステムと、そのファイルシステムの標準または仕様への準拠によって異なります。したがって、適切な方法を使用するために適切な調査を行うことをお勧めします。
Tom's postをフォローアップするために、ddを使用してスパースファイルも作成できます。
dd if=/dev/zero of=the_file bs=1 count=0 seek=12345
これにより、ほとんどのUNIXで「穴」のあるファイルが作成されます。データは実際にはディスクに書き込まれず、ゼロ以外が書き込まれるまでスペースを占有しません。
OSX(および明らかにSolaris)では、mkfile
コマンドも利用できます。
mkfile 10g big_file
これにより、「big_file」という名前の10 GBファイルが作成されます。このアプローチを見つけました こちら
次のコマンドを使用します。
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
ファイルシステムでサポートされている場合、 スパースファイル として割り当てられているため、おそらくを印刷します。
次も参照してください: man 2 open および man 2 truncate
あなたができる:
[dsm@localhost:~]$ Perl -e 'print "\0" x 100' > filename.ext
100を書き込みたいバイト数に置き換えます。
これらの回答の中には、データソースとして/dev/zero
を使用しているものがあります。テストネットワークのアップロード速度が向上する場合、アプリケーションが圧縮を実行している場合、これは最善のアイデアではないかもしれません。ゼロでいっぱいのファイルはreallyを圧縮します。このコマンドを使用してファイルを生成する
dd if=/dev/zero of=upload_test bs=10000 count=1
upload_test
を約200バイトに圧縮できました。そのため、10KBのファイルをアップロードすると思うかもしれませんが、実際にはそれよりはるかに少ない状況になります。
/dev/urandom
の代わりに/dev/zero
を使用することをお勧めします。 /dev/urandom
の出力をまったく圧縮できませんでした。
dd if=/dev/zero of=my_file.txt count=12345
たくさんの答えがありますが、他に何ができるかをうまく説明している人はいません。 ddのマニュアルページ を調べると、ファイルのサイズをより適切に指定できます。
これにより、サイズが20メガバイトのゼロで埋められた/tmp/zero_big_data_file.binが作成されます。
dd if=/dev/zero of=/tmp/zero_big_data_file.bin bs=1M count=20
これは、ゼロで埋められた、1000バイトのサイズを持つ/tmp/zero_1000bytes_data_file.binを作成します:
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1kB count=1
または
dd if=/dev/zero of=/tmp/zero_1000bytes_data_file.bin bs=1000 count=1
シェルコマンドとして:
< /dev/zero head -c 1048576 > output
これにより、現在のディレクトリにランダムな文字とその名前「4mb.txt」を含む4 MBのテキストファイルが生成されます。パラメータを変更して、さまざまなサイズと名前を生成できます。
base64 /dev/urandom | head -c 4000000 > 4mb.txt