pure cまたはlinux-shellまたはdos-commandsを使用して超巨大ファイルを作成する方法は?
-
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
システムの制限に応じて、数秒でラージファイルを作成できます...
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を使用して実行できます。詳細については、こちらをご覧ください。