create files in any filesize for testing

All about shell scripts.
Post Reply
User avatar
Posts: 81
Joined: Thu Jan 15, 2009 2:36 pm

create files in any filesize for testing

Post by vst » Fri Oct 01, 2010 9:32 am

Hi there,

I needed such files to test a networkshare.
I wanted to know how fast I could move files there in different sizes and counts.

All we need in this case is an *NIX box and dd.
Corresponding to dds man page which is:

Code: Select all

DD(1)                                                     User Commands                                                    DD(1)

       dd - convert and copy a file

       dd [OPERAND]...
       dd OPTION

       Copy a file, converting and formatting according to the operands.

              read and write BYTES bytes at a time (also see ibs=,obs=)

              convert BYTES bytes at a time

              convert the file as per the comma separated symbol list

              copy only BLOCKS input blocks

              read BYTES bytes at a time (default: 512)

              read from FILE instead of stdin

              read as per the comma separated symbol list

              write BYTES bytes at a time (default: 512)

              write to FILE instead of stdout

              write as per the comma separated symbol list

              skip BLOCKS obs-sized blocks at start of output

              skip BLOCKS ibs-sized blocks at start of input

              suppress transfer statistics

       BLOCKS  and  BYTES  may  be  followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K =1024, MB
       =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

       Each CONV symbol may be:

       ascii  from EBCDIC to ASCII

       ebcdic from ASCII to EBCDIC

       ibm    from ASCII to alternate EBCDIC

       block  pad newline-terminated records with spaces to cbs-size

              replace trailing spaces in cbs-size records with newline

       lcase  change upper case to lower case

              do not create the output file

       excl   fail if the output file already exists

              do not truncate the output file

       ucase  change lower case to upper case

       swab   swap every pair of input bytes

              continue after read errors

       sync   pad every input block with NULs to ibs-size; when used with block or unblock, pad with spaces rather than NULs

              physically write output file data before finishing

       fsync  likewise, but also write metadata

       Each FLAG symbol may be:

       append append mode (makes sense only for output; conv=notrunc suggested)

       direct use direct I/O for data

              fail unless a directory

       dsync  use synchronized I/O for data

       sync   likewise, but also for metadata

              accumulate full blocks of input (iflag only)

              use non-blocking I/O

              do not update access time

       noctty do not assign controlling terminal from file

              do not follow symlinks

       Sending a USR1 signal to a running `dd' process makes it print I/O statistics to standard error and then resume copying.

              $ dd if=/dev/zero of=/dev/null& pid=$!
              $ kill -USR1 $pid; sleep 1; kill $pid

              18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s

       Options are:

       --help display this help and exit

              output version information and exit

       Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

       Report dd bugs to
       GNU coreutils home page: <>
       General help using GNU software: <>

       Copyright   ©   2009   Free   Software   Foundation,   Inc.    License   GPLv3+:   GNU   GPL   version   3    or    later
       This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.

       The  full  documentation for dd is maintained as a Texinfo manual.  If the info and dd programs are properly installed at
       your site, the command

              info coreutils 'dd invocation'

       should give you access to the complete manual.

GNU coreutils 7.4                                          March 2010                                                      DD(1)
dd is an mechanism to copy, converting and formatting a file according to the operands.

So next we need something to fill our file with. While in *NIX if you want to move something into a deep ground of nothing you will use /dev/null. Everything get lost in there. On the otherhand you have /dev/zero which is basically the same but when you read from it you get as many zero charakters as bytes requested.

So let's do this thing!!

Code: Select all

dd if=/dev/zero of=testfile count=1024 bs=1024
What does it do?

The line above will create file called testfile with an 1MB filesize. But how?

Code: Select all

if=/dev/zero # defines the in file

of=testfile # defines the outfile

count=1024 # read only 1024 blocks at once

bs=1024 # at least define the size of the new file
The last parameter bs what defines the filesize and count are in bytes. So count define to read 1024 Byte which is actually 1 Kb. bs defines to write 1024 Bytes from count
which is 1024*1024. AS there the size of the new file is 1Mb. To get an file with 1Gb use 1024*1024 which is 1048576.

I hope this helped.

so long and thank you for the fish

Post Reply