Question

Mon système d'exploitation et mon lecteur sont

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

Alors, comment puis-je créer un fichier super énorme en quelques secondes

On m'a dit d'utiliser les fonctions MappingFile. J'ai échoué à créer des fichiers sur 2G Alors... Vos réponses chaleureuses seront toutes appréciées merci

Était-ce utile?

La solution

L'utilisation de dd sous Linux pour créer un fichier de 1 Go prend 57 secondes «d'heure murale» sur une boîte quelque peu chargée avec un disque lent et environ 17 secondes de temps système:

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

Autres conseils

vous pouvez utiliser dd

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

ou tout simplement les scripts shell et leur contenu n'a pas d'importance

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

Faire une autre fois

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

Le fichier doit-il occuper réellement l’espace disque? Sinon, vous pouvez toujours (sous Cygwin ou Linux):

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

Ceci créera un fichier vide de 7 To en une fraction de seconde. Bien sûr, cela n'allouera pas beaucoup d'espace disque réel: vous aurez un gros fichier fragmenté .

En écrivant un programme sous Cygwin ou Linux, vous pouvez faire la même chose dans un programme C avec un appel à ftruncate .

En fonction des limites de votre système, vous pouvez créer un fichier volumineux en une fraction de seconde ...

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

Jouez avec cela.

cat / dev / urandom > > / home / mybigfile

Il y aura une erreur lorsque l'espace disque sera épuisé.

Ceci est pour linux / bsd / éventuellement cgywin

Dans une machine virtuelle, j’ai fait dd if = / dev / zero de fichier = fichier; fichier rm qui remplissait le disque et le supprimait quand il était plein. Cela m'a permis de compresser un peu plus l'image pour une raison quelconque, et j'ai appris à le faire quelque part sur un forum.

Vous pouvez utiliser " fsutil " commande pour Win2000 / XP / 7:

c: > fsutil création de fichier Utilisation: fsutil createnew    Exemple: fichier fsutil createnew C: \ testfile.txt 1000

Résultats

Si vous voulez un fichier fragmenté, vous pouvez également le faire sous Windows (sur des volumes NTFS), en utilisant CreateFile, DeviceIOFunction avec FSCTL_SET_SPARSE et FSCTL_SET_ZERO_DATA; Pour plus d'informations, consultez ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top