À des fins de test, je dois générer un fichier d'une certaine taille (pour tester une limite de téléchargement).
Qu'est-ce qu'une commande pour créer un fichier d'une certaine taille sous Linux?
linux
command-line
Grundlefleck
la source
la source
Réponses:
Où
file_size
est la taille de votre fichier de test en octetsla source
dd
a une limite de 2 ^ 32 pour ses valeurs, pour ainsi créer un fichier de plus de 4 Go, il y a un truc:dd if=/dev/zero of=test bs=1M count=<size in megabytes>
.S'il vous plaît, le moderne est plus facile et plus rapide. Sous Linux, (choisissez-en un)
Il faut préciser que
truncate
sur un système de fichiers prenant en charge les fichiers épars, cela créera un fichier fragmenté etfallocate
non. Un fichier fragmenté est un fichier dans lequel les unités d'allocation qui composent le fichier ne sont pas réellement allouées tant qu'elles ne sont pas utilisées. Les méta-données du fichier prendront cependant un espace considérable, mais probablement loin de la taille réelle du fichier. Vous devriez consulter les ressources sur les fichiers épars pour plus d'informations, car ce type de fichier présente des avantages et des inconvénients. Un fichier non fragmenté a ses blocs (unités d'allocation) alloués à l'avance, ce qui signifie que l'espace est réservé pour autant que le système de fichiers le voit. Defallocate
plustruncate
, ne définira pas le contenu du fichier sur une valeur spécifiée commedd
, au lieu de cela, le contenu d'un fichier alloué avecfallocate
outruncate
peut être toute valeur de corbeille qui existait dans les unités allouées lors de la création et ce comportement peut ou non être souhaité. Ledd
est le plus lent car il écrit en fait la valeur ou le morceau de données dans le flux de fichiers entier comme spécifié avec ses options de ligne de commande.Ce comportement peut être potentiellement différent - en fonction du système de fichiers utilisé et de la conformité de ce système de fichiers à toute norme ou spécification. Par conséquent, il est conseillé de faire des recherches appropriées pour s'assurer que la méthode appropriée est utilisée.
la source
truncate
. Il a produit un fichier de taille zéro en utilisant la syntaxe ci-dessus. La 'page de manuel' defallocate
indique que les fichiers qu'elle crée sont pleins de videsspace
plutôt que de données. Il semble que cela ne serait pas utile pour certains cas attendus comme "combien de temps faut-il pour copier un fichier 1G".brew install coreutils
. Cela ajoutera un g devant la commande, donc vous devez l' exécuter comme ceci:gtruncate -s 10G foo
. J'espère que cela t'aides!NTFS
partition.Juste pour suivre la publication de Tom , vous pouvez également utiliser dd pour créer des fichiers épars:
Cela créera un fichier avec un "trou" dans la plupart des Unix - les données ne seront pas réellement écrites sur le disque, ou n'occuperont pas d'espace jusqu'à ce que quelque chose d'autre que zéro y soit écrit.
la source
count=0
,bs * seek
devient la taille du fichierSur OSX (et Solaris, apparemment), la
mkfile
commande est également disponible:Cela fait un fichier de 10 Go nommé "big_file". J'ai trouvé cette approche ici.
la source
truncate
etfallocate
ne sont pas disponibles.dd
fonctionne également comme décrit ci-dessus bien que ce soitm
pour des mégaoctets, nonM
.Utilisez cette commande:
Pour créer un gros fichier (vide), définissez
$INPUT-FILE=/dev/zero
.La taille totale du fichier sera
$BLOCK-SIZE * $NUM-BLOCKS
.Le nouveau fichier créé sera
$OUTPUT-FILE
.la source
Vous pouvez le faire par programme:
Cette approche est particulièrement utile pour mmap par la suite le fichier en mémoire.
utilisez la commande suivante pour vérifier que le fichier a la bonne taille:
Faites attention:
affichera probablement 0 car il est alloué en tant que fichier Sparse s'il est pris en charge par votre système de fichiers.
voir aussi: man 2 open et man 2 truncate
la source
vous pourriez faire:
Où vous remplacez 100 par le nombre d'octets que vous voulez écrire.
la source
Certaines de ces réponses vous permettent d'utiliser
/dev/zero
la source de vos données. Si votre réseau teste les vitesses de téléchargement, ce n'est peut-être pas la meilleure idée si votre application effectue une compression, un fichier plein de zéros se compresse très bien. Utilisation de cette commande pour générer le fichierJe pourrais compresser
upload_test
jusqu'à environ 200 octets. Ainsi, vous pourriez vous mettre dans une situation où vous pensez que vous téléchargez un fichier de 10 Ko, mais ce serait en fait beaucoup moins.Ce que je suggère d'utiliser à la
/dev/urandom
place de/dev/zero
. Je ne pouvais pas du tout compresser la sortie de/dev/urandom
beaucoup.la source
/dev/zero
, donc/dev/urandom
c'est bien.la source
Il y a beaucoup de réponses, mais aucune n'a bien expliqué ce qui peut être fait d'autre. En regardant dans les pages de manuel pour dd , il est possible de mieux spécifier la taille d'un fichier.
Cela va créer /tmp/zero_big_data_file.bin rempli de zéros, d'une taille de 20 mégaoctets:
Cela va créer /tmp/zero_1000bytes_data_file.bin rempli de zéros, d'une taille de 1000 octets:
ou
la source
En tant que commande shell:
la source
Cela générera un fichier texte de 4 Mo avec des caractères aléatoires dans le répertoire courant et son nom "4mb.txt" Vous pouvez modifier les paramètres pour générer différentes tailles et noms.
la source
À utiliser
fallocate
si vous ne voulez pas attendre le disque.Exemple:
Usage:
la source