كيفية إنشاء فائقة ضخمة الملف مع خالص c أو لينكس قذيفة أو دوس الأوامر ؟
-
08-07-2019 - |
سؤال
أنظمة التشغيل و محرك
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 لذا...الحارة الردود سوف تكون كل تقدير شكرا
المحلول
وعن طريق dd
في لينكس لإنشاء ملف 1 غيغابايت يأخذ 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 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
هل يوجد ملف لتأخذ مساحة القرص الفعلي؟ إذا لم يكن كذلك، هل يمكن دائما (في سيغوين، أو لينكس):
dd if=/dev/zero of=bigfile seek=7T bs=1 count=1
وهذا سيخلق ملف 7 TB فارغ في جزء من الثانية. بطبيعة الحال، فإنه لن تخصيص مساحة كبيرة على القرص الفعلي: سيكون لديك أ >.
وكتابة برنامج تحت سيغوين أو لينكس، يمكنك أن تفعل الشيء نفسه في برنامج C مع دعوة إلى <لأ href = "http://opengroup.org/onlinepubs/007908799/xsh/ftruncate.html" يختلط = "noreferrer نوفولو"> ftruncate .
واعتمادا على حدود النظام الخاص بك يمكنك إنشاء largefile في جزء من الثانية ...
FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);
ولعب مع هذا.
القط / ديف / urandom >> / الوطن / mybigfile
وسيكون خطأ خارج عندما تكون مساحة القرص قد نفدت.
وهذا هو لينكس / بي إس دي / ربما cgywin
في سوس في VM فعلت dd if=/dev/zero of=file;rm file
التي تملأ القرص، وعندما كان مليئا حذف الملف. وهذا ما سمح لي لضغط الصورة أكثر قليلا لسبب ما، وأنا أقرأ عن القيام بذلك في منتدى في مكان ما.
يمكنك استخدام "fsutil" الأمر for Win2000/XP/7:
ج:> fsutil الملف createnew الاستخدام :fsutil الملف createnew على سبيل المثال :fsutil الملف createnew C: estfile.txt 1000
Reagrds
إذا كنت ترغب في ملف متفرق يمكنك أن تفعل ذلك أيضا على ويندوز (على وحدات تخزين NTFS)، وذلك باستخدام CreateFile، DeviceIOFunction مع FSCTL_SET_SPARSE وFSCTL_SET_ZERO_DATA. لمزيد من المعلومات انظر هنا .