Linux 시스템 에서 대용량 파일을 빠르게 생성하는 것과 동일한 맥락 에서 Windows 시스템에서 대용량 파일을 빠르게 생성하고 싶습니다. 전반적으로 5GB를 생각하고 있습니다. 내용은 중요하지 않습니다. 내장 명령 또는 짧은 배치 파일이 바람직하지만 다른 쉬운 방법이 없으면 응용 프로그램을 수락합니다.
Linux 시스템 에서 대용량 파일을 빠르게 생성하는 것과 동일한 맥락 에서 Windows 시스템에서 대용량 파일을 빠르게 생성하고 싶습니다. 전반적으로 5GB를 생각하고 있습니다. 내용은 중요하지 않습니다. 내장 명령 또는 짧은 배치 파일이 바람직하지만 다른 쉬운 방법이 없으면 응용 프로그램을 수락합니다.
답변:
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는 나머지를 0으로 채 웁니다. 이것은 스파 스가 아닌 파일로 얻을 수 있고 약 5GiB 크기의 파일을 만드는 데 내 하드 디스크에서도 몇 초 밖에 걸리지 않을 정도로 효율적입니다. 나는 그때 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
위의 두 명령을 차례로 실행하거나 배치 파일에 추가 할 수 있습니다.
위의 명령은 몇 초 내에 1MB 파일 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
위의 두 명령을 차례로 실행하거나 배치 파일에 추가 할 수 있습니다. 위 명령은 몇 초 내에 1MB 파일 dummy.txt를 만듭니다.
RDFC http://www.bertel.de/software/rdfc/index-en.html을 확인하십시오 .
RDFC는 아마도 가장 빠르지는 않지만 데이터 블록을 할당합니다. 가장 빠른 속도는 클러스터 체인을 가져 와서 데이터를 쓰지 않고 MFT에 넣으려면 하위 수준 API를 사용해야 합니다.
여기에 은색 글 머리 기호가 없다는 점에 유의하십시오. "만들기"가 즉시 반환되면 큰 파일을 가짜로 만드는 희소 파일이 있지만 데이터 블록 / 체인을 쓸 때까지 데이터 블록 / 체인을 얻지 못합니다. 방금 읽으면 매우 빠른 0을 얻을 수 있습니다. 갑자기 드라이브가 갑자기 빨라 졌다고 믿을 수 있습니다.
Windows Server 2003 Resource Kit 도구를 확인하십시오 . Creatfil이라는 유틸리티가 있습니다.
CREATFIL.EXE
-? : This message
-FileName -- name of the new file
-FileSize -- size of file in KBytes, default is 1024 KBytes
Solaris의 mkfile과 유사합니다.
테스트를 위해 일반 10GB 파일이 필요 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
10GB 파일을 만들고 싶었지만 어떤 이유로 4GB로만 표시되었으므로 4GB로 안전하고 중지하고 싶었습니다. 운영 체제 및 기타 응용 프로그램에서 파일을 올바르게 처리하려면 1GB에서 파일 확장을 중지하십시오.
rm
은 유닉스 / 리눅스 명령이지만 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 작업 관리자를 열고 마우스 오른쪽 단추로 실행중인 가장 큰 프로세스를 찾은 다음를 클릭하십시오 Create dump file
.
임시 폴더의 메모리에있는 프로세스 크기와 관련된 파일이 생성됩니다.
기가 바이트 크기의 파일을 쉽게 만들 수 있습니다.
전체 응용 프로그램을 작성하지 않아도 Python 사용자는 Windows 및 Linux에서 동일한 스 니펫 (4 줄)으로 모든 크기의 파일을 얻을 수 있습니다 ( 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
>>>
C:\Temp
디스크 C를 채우기 위해 파일을 작성하는 PowerShell one-liner : 10MB 만 남김 :
[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
? 5GB 파일에서도 작동합니까? 2GB 또는 4GB로 제한되어 있습니까? 세 번째 매개 변수 SetFilePointer()
가 0이라는 것은 5GB 파일에 대해서는 작동하지 않음을 나타냅니다.
최근 공간 할당으로 큰 더미 파일을 만드는 방법을 찾고있었습니다. 모든 솔루션이 어색해 보입니다. 마지막으로 DISKPART
Windows 에서 유틸리티를 시작했습니다 (Windows Vista 이후 포함).
DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
여기서 MAXIMUM 은 결과 파일 크기이며 여기서 20GB입니다.
https://github.com/acch/genfiles 에서 구성 할 수있는 훌륭한 유틸리티를 찾았습니다 .
대상 파일을 임의의 데이터로 채우므로 스파 스 파일에는 아무런 문제가 없으며 내 목적 (압축 알고리즘 테스트)에는 멋진 수준의 화이트 노이즈가 발생합니다.
임시 파일은 Windows 임시 폴더에 저장해야합니다. 를 기반으로 로드에서 대답 이 파일 이름을 반환 5 기가 바이트 임시 파일을 만들려면 다음 중 하나 라이너를 사용할 수 있습니다
[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/
공백으로 채워지거나 압축 할 수없는 내용으로 채워진 임의 크기의 더미 파일을 만듭니다 (선택). 스크린 샷은 다음과 같습니다.
Plain ol 'C ... 이것은 Windows XX의 MinGW GCC에서 빌드되며 모든'일반적인 'C 플랫폼에서 작동합니다.
지정된 크기의 널 파일을 생성합니다. 결과 파일은 디렉토리 공간 점유자 항목이 아니며 실제로 지정된 바이트 수를 차지합니다. 닫기 전에 쓴 바이트를 제외하고 실제 쓰기가 없기 때문에 빠릅니다.
내 인스턴스는 0으로 가득 찬 파일을 생성합니다. 플랫폼마다 다를 수 있습니다. 이 프로그램은 본질적으로 어떤 데이터가 걸려 있는지에 대한 디렉토리 구조를 설정합니다.
#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);
}
http://www.scribd.com/doc/445750/Create-a-Huge-File 에서 DEBUG를 사용하는 솔루션을 찾았 지만 스크립트를 작성하는 쉬운 방법을 모르며 가능하지 않은 것 같습니다. 1GB보다 큰 파일을 만들려면
... 몇 초 내에 1MB 파일 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/
이 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
루프를 사용하여 약 20 초 안에 5GB 파일을 만들 수있었습니다. 나는 그것이 조잡하다는 것을 알고 있지만 충분히 빠릅니다.
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()
키보드로 빠르게 실행하거나 타이핑 할 수 있습니까? Windows에서 Python을 사용하는 경우 다음을 시도하십시오.
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
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 에서 코드를 복제 할 수 있습니다.