Windows 시스템에서 큰 파일을 빠르게 생성


245

Linux 시스템 에서 대용량 파일을 빠르게 생성하는 것과 동일한 맥락 에서 Windows 시스템에서 대용량 파일을 빠르게 생성하고 싶습니다. 전반적으로 5GB를 생각하고 있습니다. 내용은 중요하지 않습니다. 내장 명령 또는 짧은 배치 파일이 바람직하지만 다른 쉬운 방법이 없으면 응용 프로그램을 수락합니다.

답변:


399
fsutil file createnew <filename> <length>

어디 <length>바이트입니다.

fsutil 그러나 관리 권한이 필요합니다.


6
@ ZXX +1 내 목적을 위해 공간을 사용할 수없는 것으로보기 위해 파일 시스템이 필요했지만 다른 사람이 필요하면 정보가 도움이됩니다.
Leigh Riffel

22
fsutil 파일 createnew는 스파 스 파일을 만들지 않습니다 .
Per Mildner 2016 년

7
"fsutil sparse setflag temp.txt"는 스파 스 플래그를 설정하여 스파 스 파일로 만듭니다. "fsutil 스파 스 SetRange를 TEMP.TXT 0 1024"은 세트 : 스파 스의 범위
Coldblackice

관리자 권한이없는 방법이 있습니까?
wizlog

3
@ZXX 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
ivan_pozdeev

36

Sysinternals Contig 도구를 사용할 수 있습니다 . -n지정된 크기의 새 파일을 생성 하는 스위치가 있습니다. 와 달리 fsutil관리자 권한이 필요하지 않습니다.


2
와! 다운로드 및 실행이 매우 빠릅니다. 내가 사용한 줄은 m : \ contig -n M : \ SpaceBuffer.tmp 5368709120
Leigh Riffel

6
이 파일이 희소 파일인지 실제로 파일에 데이터가 있는지 확인하고 싶습니까?
slolife 2016 년

2
스파 스 파일이 아니며 (아는 한) 파일이 비어 있습니다.
Joey

1
혼란 스럽습니다 ... 순간에 스파 스 파일이 아닌 경우 실제로 디스크 공간을 어떻게 사용합니까?
Jason S

2
@JasonS : contig효과적으로 마지막 바이트로 가서 0거기 에 하나를 씁니다 (프로세스 모니터를보십시오). 그런 다음 Windows는 나머지를 0으로 채 웁니다. 이것은 스파 스가 아닌 파일로 얻을 수 있고 약 5GiB 크기의 파일을 만드는 데 내 하드 디스크에서도 몇 초 밖에 걸리지 않을 정도로 효율적입니다. 나는 그때 SSD 또는 작은 파일로 시도했다고 생각합니다. 그러나 빈 파일의 모든 바이트를 직접 작성하는 것보다 훨씬 빠릅니다.
Joey

23

스파 스 파일뿐만 아니라 데이터로 큰 파일을 생성하는 방법을 찾고있었습니다. 우연히 아래의 기술 :

실제 데이터로 파일을 작성하려면 아래 명령 행 스크립트를 사용할 수 있습니다.

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를 생성합니다 ...


6
위의 링크에서 추출하십시오. 실제 데이터로 파일을 작성하려면 아래 명령 행 스크립트를 사용하십시오. 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를 만듭니다.
Tony Stark

주의 : 첫 번째 행을 먼저 복사하고 Enter 키를 누르고 두 번째 행을 복사해야합니다. 전체 스크립트를 내 쉘에 복사하려고 시도했지만 아무런 것도 없었습니다.
Magiranu

15

RDFC http://www.bertel.de/software/rdfc/index-en.html을 확인하십시오 .

RDFC는 아마도 가장 빠르지는 않지만 데이터 블록을 할당합니다. 가장 빠른 속도는 클러스터 체인을 가져 와서 데이터를 쓰지 않고 MFT에 넣으려면 하위 수준 API를 사용해야 합니다.

여기에 은색 글 머리 기호가 없다는 점에 유의하십시오. "만들기"가 즉시 반환되면 큰 파일을 가짜로 만드는 희소 파일이 있지만 데이터 블록 / 체인을 쓸 때까지 데이터 블록 / 체인을 얻지 못합니다. 방금 읽으면 매우 빠른 0을 얻을 수 있습니다. 갑자기 드라이브가 갑자기 빨라 졌다고 믿을 수 있습니다.


이것이 가장 좋은 답변 인 것 같습니다. FSUTIL은 많은 경우에 유효한 테스트 시나리오가 아닌 스파 스 파일을 만듭니다. Sysinternals contig는 "contig -n largefile.bin 6000000000과 같은 명령을 사용하면 1.7GB 크기의 파일을 생성합니다 ... ??? RDFC는 첫 번째 시도와 쓰기에서 완벽하게 작동했기 때문에 감사합니다. 내 ATA 디스크의 최대 쓰기 속도
Syclone0044

위에서 말했듯이, FSUTIL“createnew”는 스파 스 파일을 생성하지 않고 요청 된 공간을 요청 된 파일, 즉 전체 공간에 (MFT로) 할당합니다. 그런 다음 파일 속성을 확인하면 할당 된 크기 ( "디스크"가 아닌 모든 장치에있을 수 있으므로 성가신 "디스크의 크기")는 실제 크기와 비슷하거나 매우 가깝습니다. 완전히 0으로 채워진 실제 스파 스 파일은 할당 된 크기가 매우 작습니다. 스파 스가 아닌 파일을 스파 스 파일로 변환 할 수있는 유일한 도구는 플래그 지정이 아니라 실제로 크기를 줄입니다 .SparseTest입니다.
GabrielB

13

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과 유사합니다.


1
리소스 키트를 다운로드 할 필요는 없습니다.
레이 리펠

리소스 키트의 1 exe 만 있으면 프로덕션 시스템에 모든 것을 가질 필요가 없습니다.
바이런 휘트 락

1
시도해 볼 것이지만 추가 파일 종속성이 없습니다.
레이 리펠

파일이 지금 제대로 다운로드되지 않지만 Johannes Rossel이 언급 한 Contig 도구보다 빠르다고 상상할 수 없습니다.
레이 리펠

1
감사! 다운로드 한 패키지는 rktools.exe이며 확장시 11.7MB 및 18.2MB입니다. 그리고 그것은 "createfil.exe"가 아닌 " creatfil.exe "입니다. 이 파일의 크기는 5.5 KB이며 실제로 필요한 것입니다. 쿼드 코어 3.0GHz Intel CPU에서 1GB 파일을 생성하는 데 1 분도 걸리지 않았습니다. 위에 게시 된 fsutil.exe 도구를 사용하면 생성하는 데 1 초 밖에 걸리지 않습니다. 따라서이 도구는 스파 스 파일을 생성합니다. 더 커지고 73,5KB입니다. 테스트 목적으로 큰 파일을 생성하는 것이 좋습니다.
Samir

11

테스트를 위해 일반 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에서 파일 확장을 중지하십시오.


이중이 아닌 단일 퍼센트 문자를 사용해야합니다. 또한 괄호 안에 추가 공백이 필요하지 않습니다. 편집 해 드리겠습니다.
Samir

여기에서 어떤 운영 체제를 사용 했습니까? 이 프로그램 rm은 유닉스 / 리눅스 명령이지만 delDOS / Windows 명령입니까?
Samir

이것은 배치 파일이어야합니까, 아니면 cmd에서 이러한 명령을 바로 실행해야합니까? 단일 퍼센트 부호는 cmd에서 사용 %i되지만 배치 파일에서는 이중 퍼센트 부호 (예 :)를 사용 %%i합니다.
Samir

@Sammy :로 시작 @echo off하므로 분명히입니다 .bat. 그것이 두 배의 퍼센트 부호를 갖는 이유입니다.
f.ardelian

좋습니다. 그러면 우리는 이중 퍼센트 부호를 되 찾을 수 있습니다. file-4gb.txt작성하기 전에 왜 삭제 합니까? 그 결과 오류가 발생하지 않습니까? 실제로 file-4gb.txt그 라인 에서 만들려고 했습니까 ? 아니면 이전 file-big.txt파일의 이름을 바꾸 시겠습니까? 배치 파일의 경우에도 명확하지 않습니다. 이름을 바꾸려는 경우 찾고 있던 명령은 아마도입니다 ren. 처럼 ren file-big.txt file-4gb.txt. 나는 당신이 그것을 혼동했다고 생각합니다 rm.
Samir

7

Windows 작업 관리자를 열고 마우스 오른쪽 단추로 실행중인 가장 큰 프로세스를 찾은 다음를 클릭하십시오 Create dump file.

임시 폴더의 메모리에있는 프로세스 크기와 관련된 파일이 생성됩니다.

기가 바이트 크기의 파일을 쉽게 만들 수 있습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


2
좋은 해결책! 다양한 크기의 응용 프로그램을 실행하는 경우 도움이됩니다.
Don Cheadle

6

전체 응용 프로그램을 작성하지 않아도 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
>>>

1
하나의 문제를 해결하기 위해 Python을 설치하는 것은 실제로 과도합니다. Powershell 또는 C # -gist.github.com / nadams810 / 6539070 과 같은 내장 기능을 사용하는 것이 어떻습니까 (C # 응용 프로그램을 컴파일하기 위해 Visual Studio가 필요하지 않음).
Natalie Adams

1
.Net, C # 및 Powershell이 ​​반드시 교차 플랫폼 일 필요는 없습니다.
gimel

1
이들은 OP가 요청한 것 (시스템이 완전히 최신 상태라고 가정) 인 Windows에 내장되어 있습니다.
Natalie Adams

@NatalieAdams 그러나이 답변 다른 문제를 해결하기 위해 Python을 이미 설치 한 경우 매우 유용합니다. :)
criptych는 Monica

6

C:\Temp디스크 C를 채우기 위해 파일을 작성하는 PowerShell one-liner : 10MB 만 남김 :

[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close

3
실제 컨텐츠 또는 스파 스 파일로 파일을 작성합니까?
Samselvaprabu

6

사용하다:

/*
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 파일에 대해서는 작동하지 않음을 나타냅니다.
Peter Mortensen

4

최근 공간 할당으로 큰 더미 파일을 만드는 방법을 찾고있었습니다. 모든 솔루션이 어색해 보입니다. 마지막으로 DISKPARTWindows 에서 유틸리티를 시작했습니다 (Windows Vista 이후 포함).

DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED

여기서 MAXIMUM 은 결과 파일 크기이며 여기서 20GB입니다.


지금까지 최고의 솔루션.
Frank FYC

나를 위해 작동하지 않습니다. 불행히도 파일이 생성되지 않습니다. 관리자 권한으로 시도했습니다.
Magiranu

4

https://github.com/acch/genfiles 에서 구성 할 수있는 훌륭한 유틸리티를 찾았습니다 .

대상 파일을 임의의 데이터로 채우므로 스파 스 파일에는 아무런 문제가 없으며 내 목적 (압축 알고리즘 테스트)에는 멋진 수준의 화이트 노이즈가 발생합니다.


이 유틸리티는 단일 파일 Java 응용 프로그램으로 Java가있는 모든 플랫폼에서 작동해야합니다.
Paul

@MusikPolice - 링크가 죽었
DCP

유명한. 불행하게도, 6 년 후에 일어날 수밖에 없습니다.
MusikPolice

3

임시 파일은 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($_)

3

내가 찾은 가장 간단한 방법은이 무료 유틸리티입니다 : http://www.mynikko.com/dummy/

공백으로 채워지거나 압축 할 수없는 내용으로 채워진 임의 크기의 더미 파일을 만듭니다 (선택). 스크린 샷은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


3

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);
}

코드 포맷을 확인하는 것이 좋습니다. 그리고 BTW. 이 질문에는 이미 좋은 대답이 있으며 fseek + fwrite는 이미 Pyton 및 WinAPI에서 제시되었으므로 도움이되지 않습니다. 그러나 완전한 예제를 제공 한 것이 좋습니다. +1입니다. 하지만 그냥 당신이 누군가 좀 더 :) 도움이 될 수있는 시간의 낭비, 재 응답 이미 해결되지 질문에 대한 시도
케찰코아틀

2

http://www.scribd.com/doc/445750/Create-a-Huge-File 에서 DEBUG를 사용하는 솔루션을 찾았 지만 스크립트를 작성하는 쉬운 방법을 모르며 가능하지 않은 것 같습니다. 1GB보다 큰 파일을 만들려면


1
5 개의 파일을 만든 다음 추가 할 수 없습니까? 스레딩을 사용하여 동시에 생성 한 다음 추가하십시오 : D
dassouki

프로그래밍하지 않고 스레드 할 수 있는지는 알 수 없지만 예, 필요한 크기를 얻기 위해 파일을 몇 번 복사 할 수 있습니다. 필자의 경우 파일 자체가 5GB 일 필요는 없으며 사용 된 공간 만 있으면됩니다.
레이 리펠

2
스레딩 사운드를 사용하여 여러 파일에 쓰면 하드 드라이브의 속도가 느리다는 점을 고려할 때 ... 추가하면 시간 측면에서 상당히 비싸므로 "빠른"기준에 실패 할 수 있습니다.
Joey


2

cat powershell 명령을 사용할 수 있습니다.

먼저 몇 글자로 된 간단한 텍스트 파일을 만드십시오. 초기 문자가 많을수록 더 빨리 커집니다. 그것을 out.txt라고합시다. 그런 다음 Powershell에서

cat out.txt >> out.txt

파일을 충분히 크게 만들어야하는 한 기다려야합니다. 그런 다음 ctrl-c를 눌러 종료하십시오.


1

이 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 속도에 따라 생성하는 데 다소 시간이 걸릴 수 있습니다 ...


포스터가 빨리 물었다. 이를 위해서는 C ++ 컴파일러를 설치해야합니다.

1

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()

0

키보드로 빠르게 실행하거나 타이핑 할 수 있습니까? Windows에서 Python을 사용하는 경우 다음을 시도하십시오.

cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"

0

다른 GUI 솔루션 : WinHex.

“File” > “New” > “Desired file size” = [X]
“File” > “Save as” = [Name]

이미 제안 된 솔루션 중 일부와 달리 실제로 장치에 (빈) 데이터를 씁니다.

또한 선택 가능한 패턴이나 임의의 데이터로 새 파일을 채울 수 있습니다.

“Edit” > “Fill file” (or “Fill block” if a block is selected)

-1

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 에서 코드를 복제 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.