Domanda

Il mio sistema operativo e il mio disco sono

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

Quindi, come posso creare un file super enorme in secondi

Mi è stato detto di usare le funzioni MappingFile. Non sono riuscito a creare file oltre 2G Così... Le tue calorose risposte saranno tutte apprezzate grazie

È stato utile?

Soluzione

L'uso di dd in Linux per creare un file da 1 GB richiede 57 secondi di "orologio da parete" su una scatola un po 'caricata con un disco lento e circa 17 secondi di tempo di sistema:

$ 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
$

Altri suggerimenti

puoi usare dd

dd if=/dev/zero of=bigfile.txt bs=$((1024*1024)) count=100

o il semplice scripting e contenuti della shell non contano

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

Ripeti un'altra volta

while true
do
  cat bigfile >> bigfile2.txt           
  # check for size and break out..
done
rm -f dummy bigfile

Il file deve occupare spazio su disco effettivo? In caso contrario, potresti sempre (in Cygwin o Linux):

dd if=/dev/zero of=bigfile seek=7T bs=1 count=1

Questo creerà un file vuoto da 7 TB in una frazione di secondo. Ovviamente, non assegnerà molto spazio su disco effettivo: avrai un grande file sparse .

Scrivendo un programma su Cygwin o Linux, puoi fare la stessa cosa in un programma C con una chiamata a ftruncate .

A seconda dei limiti del sistema è possibile creare un file di grandi dimensioni in una frazione di secondo ...

FILE *fp = fopen("largefile" ,"w");
for(int i = 0; i < 102400; i++)
{
    fseek(fp, 10240000, SEEK_CUR);
}
fprintf(fp, "%c", 'x');
fclose(fp);

Gioca con questo.

cat / dev / urandom > > / Home / mybigfile

Si esaurirà quando lo spazio sul disco è esaurito.

Questo è per linux / bsd / possibilmente cgywin

In uso in una VM ho fatto dd if = / dev / zero of = file; rm file che ha riempito il disco e quando è stato completamente cancellato il file. Questo mi ha permesso di comprimere l'immagine un po 'di più per qualche motivo, e ho letto di farlo su un forum da qualche parte.

Puoi utilizzare " fsutil " comando per Win2000 / XP / 7:

c: > fsutil createnew file Utilizzo: creats file fsutil    Ad esempio: fsutil file createnew C: \ testfile.txt 1000

Reagrds

Se vuoi un file sparso puoi farlo anche su Windows (su volumi NTFS), usando CreateFile, DeviceIOFunction con FSCTL_SET_SPARSE e FSCTL_SET_ZERO_DATA; per maggiori informazioni vedi qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top