pure cまたはlinux-shellまたはdos-commandsを使用して超巨大ファイルを作成する方法は?

StackOverflow https://stackoverflow.com/questions/1817716

  •  08-07-2019
  •  | 
  •  

質問

私のOSとドライブは

OS: Windows XP sp2 or Linux SUSE 9 or Cygwin
Compiler: Visual C++ 2003 or Gcc or Cygwin
PC and os are both 32 bits

では、秒単位で超巨大ファイルを作成するにはどうすればよいですか

MappingFile関数を使用するように言われました。 2Gでファイルを作成できませんでした そう... あなたの温かい反応はすべて高く評価されます ありがとう

役に立ちましたか?

解決

Linuxで dd を使用して1 GBのファイルを作成するには、低速のディスクを搭載した多少ロードされたボックスで57秒、システム時間で17秒かかります。

$ time dd if=/dev/zero of=bigfile bs=G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 53.9903 s, 19.9 MB/s

real    0m56.685s
user    0m0.008s
sys     0m17.113s
$

他のヒント

ddを使用できます

dd if=/dev/zero of=bigfile.txt bs=$((1024*1024)) count=100

または単純なシェルスクリプトと内容は関係ありません

1) create a dummy file with a few lines, eg 10 lines
2) use cat dummy >> bigfile in a while loop

eg

    while true
    do
      cat dummy >> bigfile.txt 
      #check for number of lines more than 10000 for example and break out of loop
    done

別の時間を行う

while true
do
  cat bigfile >> bigfile2.txt           
  # check for size and break out..
done
rm -f dummy bigfile

ファイルは実際のディスク容量を占有する必要がありますか?そうでない場合は、常に(CygwinまたはLinuxで)次のことができます。

dd if=/dev/zero of=bigfile seek=7T bs=1 count=1

これにより、数秒で空の7 TBファイルが作成されます。もちろん、実際のディスク容量はあまり割り当てません。大きなスパースファイル

CygwinまたはLinuxでプログラムを作成すると、Cプログラムで ftruncate

システムの制限に応じて、数秒でラージファイルを作成できます...

FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
    fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);

これで遊ぶ。

cat / dev / urandom&gt;&gt; / home / mybigfile

ディスク容量が不足するとエラーになります。

これはlinux / bsd / cgywinの可能性があります

VMでsuseを使用して、 dd if = / dev / zero of = file; rm file を実行し、ディスクがいっぱいになり、いっぱいになるとファイルを削除しました。これにより、何らかの理由で画像をもう少し圧縮することができ、どこかのフォーラムでそれを行うことについて読みました。

&quot; fsutil&quot;を使用できます。 Win2000 / XP / 7のコマンド:

c:&gt; fsutil ファイルcreatenew 使用法:fsutilファイルcreatenew    例:fsutilファイルcreatenew C:\ testfile.txt 1000

リガード

スパースファイルが必要な場合は、Windows(NTFSボリューム)でも、CreateFile、DeviceIOFunction、FSCTL_SET_SPARSEおよびFSCTL_SET_ZERO_DATAを使用して実行できます。詳細については、こちらをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top