Comment puis-je rapidement créer un gros fichier?

25

Comment créer rapidement et facilement un fichier d’une taille de 2 Go, par exemple?

    
posée ændrük 10.06.2011 - 06:01
la source

3 réponses

34

La méthode du remplissage zéro (modifié ici pour éviter les goulots d'étranglement potentiels de la mémoire ) a mis 17 secondes à créer un fichier de 10 Go sur un disque SSD et l’interface graphique d’Ubuntu ne répondait plus.

$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s

real    0m17.642s
user    0m0.008s
sys     0m9.404s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

Fallocate crée instantanément des fichiers volumineux en manipulant directement l’espace disque alloué au fichier. :

$ time sh -c 'fallocate -l 10G large; sync'

real    0m0.038s
user    0m0.000s
sys     0m0.016s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

tronquer fonctionne également instantanément et crée fichiers fragmentés qui n'utilisent pas l'espace disque réel jusqu'à ce que des données soient écrites plus tard:

$ time sh -c 'truncate -s 10G large; sync'

real    0m0.014s
user    0m0.000s
sys     0m0.004s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
0       large
    
réponse donnée ændrük 13.06.2011 - 18:38
la source
18

Un moyen simple serait d’utiliser la commande dd pour écrire un fichier plein de zéros.

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = fichier d'entrée
  • of = fichier de sortie
  • bs = octets

Utilisez G dans l'argument de taille si vous voulez un ordinateur (1024 * 1024 * 1024) gigaoctets ou un Go si vous voulez un humain (1000 * 1000 * 1000) gigaoctets.

    
réponse donnée MikeVB 10.06.2011 - 06:23
la source
1

ftp://ftp.fsf.hu/testfiles/maketestfiles.sh

ou Seek est la taille du fichier que vous voulez en octets - 1.

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
    
réponse donnée LanceBaynes 16.06.2011 - 12:17
la source

Lire d'autres questions sur les étiquettes