create files in any filesize for testing

All about shell scripts.
Post Reply
User avatar
vst
Admin
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)

NAME
       dd - convert and copy a file

SYNOPSIS
       dd [OPERAND]...
       dd OPTION

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

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

       cbs=BYTES
              convert BYTES bytes at a time

       conv=CONVS
              convert the file as per the comma separated symbol list

       count=BLOCKS
              copy only BLOCKS input blocks

       ibs=BYTES
              read BYTES bytes at a time (default: 512)

       if=FILE
              read from FILE instead of stdin

       iflag=FLAGS
              read as per the comma separated symbol list

       obs=BYTES
              write BYTES bytes at a time (default: 512)

       of=FILE
              write to FILE instead of stdout

       oflag=FLAGS
              write as per the comma separated symbol list

       seek=BLOCKS
              skip BLOCKS obs-sized blocks at start of output

       skip=BLOCKS
              skip BLOCKS ibs-sized blocks at start of input

       status=noxfer
              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

       unblock
              replace trailing spaces in cbs-size records with newline

       lcase  change upper case to lower case

       nocreat
              do not create the output file

       excl   fail if the output file already exists

       notrunc
              do not truncate the output file

       ucase  change lower case to upper case

       swab   swap every pair of input bytes

       noerror
              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

       fdatasync
              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

       directory
              fail unless a directory

       dsync  use synchronized I/O for data

       sync   likewise, but also for metadata

       fullblock
              accumulate full blocks of input (iflag only)

       nonblock
              use non-blocking I/O

       noatime
              do not update access time

       noctty do not assign controlling terminal from file

       nofollow
              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

       --version
              output version information and exit

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

REPORTING BUGS
       Report dd bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>

COPYRIGHT
       Copyright   ©   2009   Free   Software   Foundation,   Inc.    License   GPLv3+:   GNU   GPL   version   3    or    later
       <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
       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.


regards
Valentin
so long and thank you for the fish
staubmann.eu

Post Reply