ในหลอดเลือดดำเดียวกันกับสร้างไฟล์ขนาดใหญ่อย่างรวดเร็วบนระบบ Linuxฉันต้องการสร้างไฟล์ขนาดใหญ่บนระบบ Windows อย่างรวดเร็ว โดยขนาดใหญ่ฉันคิด 5 GB เนื้อหาไม่สำคัญ คำสั่งในตัวหรือไฟล์แบตช์สั้นจะดีกว่า แต่ฉันจะยอมรับแอปพลิเคชันหากไม่มีวิธีอื่นที่ง่าย
ในหลอดเลือดดำเดียวกันกับสร้างไฟล์ขนาดใหญ่อย่างรวดเร็วบนระบบ Linuxฉันต้องการสร้างไฟล์ขนาดใหญ่บนระบบ Windows อย่างรวดเร็ว โดยขนาดใหญ่ฉันคิด 5 GB เนื้อหาไม่สำคัญ คำสั่งในตัวหรือไฟล์แบตช์สั้นจะดีกว่า แต่ฉันจะยอมรับแอปพลิเคชันหากไม่มีวิธีอื่นที่ง่าย
คำตอบ:
fsutil file createnew <filename> <length>
ที่<length>
อยู่ในไบต์
fsutil
ต้องใช้สิทธิ์ของผู้ดูแลระบบ
fsutil file createnew
ไม่สร้างไฟล์หร็อมแหร็ม:c:\>fsutil file createnew test.txt 0x100000
File c:\test.txt is created
c:\>fsutil sparse queryflag test.txt
This file is NOT set as sparse
คุณสามารถใช้เครื่องมือSysinternals Contig มันมี-n
สวิตช์ที่สร้างไฟล์ใหม่ที่มีขนาดที่กำหนด ไม่เหมือนกับfsutil
สิทธิ์การดูแลระบบ
contig
อย่างมีประสิทธิภาพไปที่ไบต์สุดท้ายและเขียนหนึ่งที่0
นั่น (เพียงแค่ดูด้วยการตรวจสอบกระบวนการ) Windows จะเติมส่วนที่เหลือด้วยศูนย์ นี่อาจเป็นเรื่องที่มีประสิทธิภาพเท่าที่คุณจะทำได้ด้วยไฟล์ที่ไม่กระจัดกระจายและการสร้างไฟล์ขนาดประมาณ 5 GiB ใช้เวลาเพียงไม่กี่วินาทีแม้ในฮาร์ดดิสก์ของฉัน ฉันเดาแล้วฉันก็ลองทั้ง SSD หรือไฟล์เล็ก ๆ แต่มันค่อนข้างเร็ว (และเร็วกว่าการเขียนไฟล์เปล่าทั้งหมดด้วยตนเอง
ฉันค้นหาวิธีสร้างไฟล์ขนาดใหญ่ที่มีข้อมูลไม่ใช่แค่ไฟล์กระจัดกระจาย มาในเทคนิคด้านล่าง :
หากคุณต้องการสร้างไฟล์ด้วยข้อมูลจริงคุณสามารถใช้สคริปต์บรรทัดคำสั่งด้านล่าง
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
(เรียกใช้คำสั่งสองคำสั่งด้านบนทีละคำสั่งหรือคุณสามารถเพิ่มลงในไฟล์แบทช์ได้)
คำสั่งดังกล่าวสร้าง dummy.txt ไฟล์ 1 MB ภายในไม่กี่วินาที ...
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
(เรียกใช้คำสั่งสองคำสั่งด้านบนทีละคำสั่งหรือคุณสามารถเพิ่มไปยังไฟล์แบตช์) คำสั่งด้านบนสร้างไฟล์ dummy.txt ขนาด 1 MB ภายในไม่กี่วินาที
ลองดู RDFC http://www.bertel.de/software/rdfc/index-en.html
RDFC อาจไม่ใช่วิธีที่เร็วที่สุด แต่จะจัดสรรบล็อคข้อมูล วิธีที่เร็วที่สุดจะต้องใช้ API ระดับต่ำกว่าเพื่อรับกลุ่มของคลัสเตอร์และใส่ลงในMFTโดยไม่ต้องเขียนข้อมูล
ระวังว่าไม่มีกระสุนเงินที่นี่ถ้า "การสร้าง" ส่งคืนทันทีนั่นหมายความว่าคุณมีไฟล์ที่กระจัดกระจายซึ่งเพิ่งปลอมไฟล์ขนาดใหญ่ แต่คุณจะไม่ได้รับบล็อกข้อมูล / กลุ่มข้อมูลจนกว่าคุณจะเขียนลงไป หากคุณเพิ่งอ่านคือคุณได้ค่าศูนย์ที่เร็วมากซึ่งจะทำให้คุณเชื่อว่าไดรฟ์ของคุณในทันใดนั้นก็เร็วอย่างเห็นได้ชัด :-)
ตรวจสอบWindows Server 2003 เครื่องมือ มีโปรแกรมอรรถประโยชน์ที่เรียกว่า Creatfil
CREATFIL.EXE
-? : This message
-FileName -- name of the new file
-FileSize -- size of file in KBytes, default is 1024 KBytes
มันคล้ายกับ mkfile บน Solaris
ฉันต้องการไฟล์ 10 GB ปกติสำหรับการทดสอบดังนั้นฉันจึงไม่สามารถใช้fsutil
เพราะมันสร้างไฟล์แบบกระจาย (ขอบคุณ @ZXX)
@echo off
:: Create file with 2 bytes
echo.>file-big.txt
:: Expand to 1 KB
for /L %%i in (1, 1, 9) do type file-big.txt>>file-big.txt
:: Expand to 1 MB
for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt
:: Expand to 1 GB
for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt
:: Expand to 4 GB
del file-4gb.txt
for /L %%i in (1, 1, 4) do type file-big.txt>>file-4gb.txt
del file-big.txt
ฉันต้องการสร้างไฟล์ 10 GB แต่ด้วยเหตุผลบางอย่างมันมีเพียง 4 GB เท่านั้นดังนั้นฉันต้องการความปลอดภัยและหยุดที่ 4 GB หากคุณต้องการให้แน่ใจว่าไฟล์ของคุณได้รับการจัดการอย่างถูกต้องโดยระบบปฏิบัติการและแอปพลิเคชันอื่น ๆ ให้หยุดขยายที่ 1 GB
rm
เป็นคำสั่ง Unix / Linux ในขณะที่del
เป็นคำสั่ง DOS / Windows ... ?
%i
%%i
@echo off
.bat
นั่นเป็นสาเหตุที่มันมีเครื่องหมายสองเปอร์เซ็นต์
file-4gb.txt
ก่อนที่จะสร้าง? จะไม่ส่งผลให้เกิดข้อผิดพลาด? จริง ๆ แล้วคุณตั้งใจจะสร้างfile-4gb.txt
ในบรรทัดนั้นหรือไม่? หรือเปลี่ยนชื่อfile-big.txt
ไฟล์เก่า? สิ่งนี้ไม่ชัดเจนแม้แต่ไฟล์แบตช์ ren
ถ้าคุณหมายถึงการเปลี่ยนชื่อแล้วคำสั่งที่คุณกำลังมองหาน่าจะเป็น กดren file-big.txt file-4gb.txt
ไลค์ rm
ฉันคิดว่าคุณสับสนว่า
เปิด Windows Task Manager, Create dump file
หากระบวนการที่ใหญ่ที่สุดที่คุณได้ทำงานคลิกขวาและคลิกที่
สิ่งนี้จะสร้างไฟล์ที่สัมพันธ์กับขนาดของกระบวนการในหน่วยความจำในโฟลเดอร์ชั่วคราวของคุณ
คุณสามารถสร้างไฟล์ที่มีขนาดเป็นกิกะไบต์ได้อย่างง่ายดาย
สั้น ๆ ในการเขียนแอปพลิเคชั่นเต็มรูปแบบพวกเรา Python สามารถรับไฟล์ได้ทุกขนาดด้วยสี่บรรทัดข้อมูลโค้ดเดียวกันบน Windows และ Linux ( os.stat()
บรรทัดเป็นเพียงการตรวจสอบ):
>>> f = open('myfile.txt','w')
>>> f.seek(1024-1) # an example, pick any size
>>> f.write('\x00')
>>> f.close()
>>> os.stat('myfile.txt').st_size
1024L
>>>
PowerShell หนึ่งซับเพื่อสร้างไฟล์ในC:\Temp
การเติมดิสก์ C: เหลือเพียง 10 MB:
[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
ใช้:
/*
Creates an empty file, which can take all of the disk
space. Just specify the desired file size on the
command line.
*/
#include <windows.h>
#include <stdlib.h>
int main (int argc, char* ARGV[])
{
int size;
size = atoi(ARGV[1]);
const char* full = "fulldisk.dsk";
HANDLE hf = CreateFile(full,
GENERIC_WRITE,
0,
0,
CREATE_ALWAYS,
0,
0);
SetFilePointer(hf, size, 0, FILE_BEGIN);
SetEndOfFile(hf);
CloseHandle(hf);
return 0;
}
int
อะไร จะใช้งานได้กับไฟล์ 5 GB หรือไม่ จำกัด เพียง 2 หรือ 4 GB หรือไม่ ที่พารามิเตอร์ตัวที่สามSetFilePointer()
คือ 0 แนะนำว่ามันจะไม่ทำงานสำหรับไฟล์ 5 GB
ฉันกำลังมองหาวิธีสร้างไฟล์จำลองขนาดใหญ่ที่มีการจัดสรรพื้นที่เมื่อเร็ว ๆ นี้ โซลูชันทั้งหมดดูเคอะเขิน ในที่สุดฉันเพิ่งเริ่มDISKPART
อรรถประโยชน์ใน Windows (ฝังตัวตั้งแต่ Windows Vista):
DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
โดยที่MAXIMUMคือขนาดไฟล์ผลลัพธ์ 20 GB ที่นี่
ผมพบว่ายูทิลิตี้ที่ดีที่กำหนดค่าได้ที่https://github.com/acch/genfiles
มันเติมไฟล์เป้าหมายด้วยข้อมูลแบบสุ่มดังนั้นจึงไม่มีปัญหากับไฟล์ที่กระจัดกระจายและสำหรับจุดประสงค์ของฉัน (การทดสอบอัลกอริธึมการบีบอัด) มันให้เสียงที่ดีในระดับสีขาว
ควรเก็บไฟล์ชั่วคราวในโฟลเดอร์ชั่วคราวของ Windows ขึ้นอยู่กับคำตอบจาก Rodคุณสามารถใช้หนึ่งซับต่อไปนี้เพื่อสร้างไฟล์ชั่วคราวขนาด 5 GB ซึ่งจะคืนชื่อไฟล์
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }
คำอธิบาย:
[System.IO.Path]::GetTempFileName()
สร้างชื่อไฟล์แบบสุ่มพร้อมส่วนขยายแบบสุ่มในโฟลเดอร์ Windows Temp[System.IO.File]::Create($_)
ที่สร้างไฟล์.SetLength(5gb)
ชื่อไฟล์ที่มีการตั้งค่าไปยังไฟล์ที่สร้างขึ้นใหม่ด้วย ฉันรู้สึกประหลาดใจเล็กน้อยที่ค้นพบว่า PowerShell สนับสนุนการแปลงไบต์ซึ่งมีประโยชน์จริงๆ.close
เพื่ออนุญาตให้แอปพลิเคชันอื่นเข้าถึงได้;$_
ชื่อไฟล์จะถูกส่งกลับและด้วย| ? { $_ }
จะมั่นใจได้ว่าเฉพาะชื่อไฟล์ที่ถูกส่งกลับและไม่ได้สตริงว่างกลับโดย[System.IO.File]::Create($_)
วิธีที่ง่ายที่สุดที่ฉันพบคือยูทิลิตี้ฟรีนี้: http://www.mynikko.com/dummy/
สร้างไฟล์ดัมมี่ที่มีขนาดตามอำเภอใจซึ่งเต็มไปด้วยช่องว่างหรือเต็มไปด้วยเนื้อหาที่ไม่สามารถบีบอัดได้ (ตัวเลือกของคุณ) นี่คือภาพหน้าจอ:
ol ol 'C ... สิ่งนี้สร้างภายใต้ MinGW GCC บน Windows XX และควรทำงานบนแพลตฟอร์ม C' ทั่วไป 'ใด ๆ
มันสร้างไฟล์ Null ขนาดที่ระบุ ไฟล์ผลลัพธ์ไม่ได้เป็นเพียงรายการพื้นที่ครอบครองไดเรกทอรีและในความเป็นจริงนั้นมีจำนวนไบต์ที่ระบุ สิ่งนี้เร็วเนื่องจากไม่มีการเขียนจริงเกิดขึ้นยกเว้นสำหรับไบต์ที่เขียนก่อนปิด
อินสแตนซ์ของฉันสร้างไฟล์ที่เต็มไปด้วยเลขศูนย์ - ซึ่งอาจแตกต่างกันไปตามแพลตฟอร์ม โปรแกรมนี้จัดทำโครงสร้างไดเรกทอรีสำหรับข้อมูลที่แขวนอยู่
#include <stdio.h>
#include <stdlib.h>
FILE *file;
int main(int argc, char **argv)
{
unsigned long size;
if(argc!=3)
{
printf("Error ... syntax: Fillerfile size Fname \n\n");
exit(1);
}
size = atoi(&*argv[1]);
printf("Creating %d byte file '%s'...\n", size, &*argv[2]);
if(!(file = fopen(&*argv[2], "w+")))
{
printf("Error opening file %s!\n\n", &*argv[2]);
exit(1);
}
fseek(file, size-1, SEEK_SET);
fprintf(file, "%c", 0x00);
fclose(file);
}
ฉันพบวิธีแก้ปัญหาโดยใช้ DEBUG ที่http://www.crid.com/doc/445750/Create-a-Huge-Fileแต่ฉันไม่ทราบวิธีที่ง่ายในการเขียนสคริปต์และดูเหมือนจะไม่สามารถทำได้ เพื่อสร้างไฟล์ที่มีขนาดใหญ่กว่า 1 GB
... 1 MB ไฟล์ dummy.txt ภายในไม่กี่วินาที
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
ดูที่นี่: http://www.windows-commandline.com/how-to-create-large-dummy-file/
คุณสามารถใช้คำสั่ง cat powershell
ขั้นแรกให้สร้างไฟล์ข้อความแบบง่ายที่มีอักขระสองสามตัว ยิ่งคุณป้อนอักขระเริ่มต้นมากเท่าใดยิ่งเร็วขึ้นเท่านั้น เรียกมันว่า out.txt จากนั้นใน Powershell:
cat out.txt >> out.txt
รอนานเท่าที่จำเป็นเพื่อทำให้ไฟล์มีขนาดใหญ่พอ จากนั้นกด ctrl-c เพื่อสิ้นสุด
คุณสามารถลองใช้รหัส C ++ นี้:
#include<stdlib.h>
#include<iostream>
#include<conio.h>
#include<fstream>
#using namespace std;
int main()
{
int a;
ofstream fcout ("big_file.txt");
for(;;a += 1999999999){
do{
fcout << a;
}
while(!a);
}
}
อาจใช้เวลาสักครู่ในการสร้างขึ้นอยู่กับความเร็วของ CPU ของคุณ ...
คำตอบง่ายๆใน Python: หากคุณต้องการสร้างไฟล์ข้อความตัวจริงขนาดใหญ่ฉันเพิ่งใช้while
วนรอบอย่างง่ายและสามารถสร้างไฟล์ 5 GB ในเวลาประมาณ 20 วินาที ฉันรู้ว่ามันดิบ แต่ก็เร็วพอ
outfile = open("outfile.log", "a+")
def write(outfile):
outfile.write("hello world hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world"+"\n")
return
i=0
while i < 1000000:
write(outfile)
i += 1
outfile.close()
ด่วนเพื่อดำเนินการหรือพิมพ์อย่างรวดเร็วบนแป้นพิมพ์? หากคุณใช้ Python บน Windows คุณสามารถลอง:
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
โซลูชัน GUI อื่น: WinHex
“File” > “New” > “Desired file size” = [X]
“File” > “Save as” = [Name]
ตรงกันข้ามกับโซลูชันที่นำเสนอบางส่วนแล้วจริง ๆ แล้วมันเขียนข้อมูล (ว่าง) บนอุปกรณ์
นอกจากนี้ยังอนุญาตให้เติมไฟล์ใหม่ด้วยรูปแบบที่เลือกได้หรือข้อมูลสุ่ม:
“Edit” > “Fill file” (or “Fill block” if a block is selected)
ฉันได้เพิ่มfsutil
วิธีการบางอย่างตามที่กล่าวไว้ในคำตอบที่เลือก นี่คือการสร้างไฟล์ของส่วนขยายที่แตกต่างกันและ / หรือขนาดต่างๆ
set file_list=avi bmp doc docm docx eps gif jpeg jpg key m4v mov mp4 mpg msg nsf odt pdf png pps ppsx ppt pptx rar rtf tif tiff txt wmv xls xlsb xlsm xlsx xps zip 7z
set file_size= 1
for %%f in (%file_list%) do (
fsutil file createnew valid_%%f.%%f %file_size%
) > xxlogs.txt
รหัสสามารถโคลนได้จากhttps://github.com/iamakidilam/bulkFileCreater.git