Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
Apress - Books for Professionals by Professionals

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 76 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       sg_dd   [append=0|1]   [blk_sgio=0|1]  [bpt=<n>]  [bs=<n>]
       [cdbsz=6|10|12|16]   [coe=0|1]    [count=<n>]    [dio=0|1]
       [fua=0|1|2|3]  [ibs=<n>] [if=<ifile>] [obs=<n>] [odir=0|1]
       [of=<ofile>] [seek=<n>] [skip=<n>]  [sync=0|1]  [time=0|1]


       Copy data to and from Linux SCSI generic (sg) devices, raw
       devices and those block devices  that  support  the  SG_IO
       ioctl  (which  are  only found in the lk 2.5 series). Data
       may be copied to and from normal files as  well.   Similar
       syntax  and  semantics  to  dd(1) but does not perform any

       append=0 | 1
              when set to 1 the output will be  appended  to  the
              normal  file  given  to  the  "of=<name>" argument.
              Appending only takes place  to  normal  files:  not
              pipes  nor  raw files nor sg devices. Error message
              produced if append=1 and seek=<n> where  <n>  >  0.
              Default  is  0  which starts output at offset  of a
              normal file (subject to the "seek=" argument).

       blk_sgio=0 | 1
              when set to 0 block  devices  (e.g.  /dev/sda)  are
              treated  like  normal  files.  When  set to 1 block
              devices are assumed to accept the SG_IO ioctl; this
              is  only  appropriate  for  kernels  later  than lk
              2.5.48 .  Default is 0.

              each IO transaction will be made using this  number
              of  blocks  (or  less  if  near  the end of count).
              Default is 128. So for bs=512 the reads and  writes
              will  each  convey 64KB of data by default (less if
              near the end of the  transfer  or  memory  restric­

              this must be the block size of the physical device.
              Note that this differs  from  dd(1)  which  permits
              "bs"  to  be  an  integral multiple. Default is 512
              which is usually correct for  disks  but  incorrect
              for  cdroms (which normally have 2048 byte blocks).

       cdbsz=6 | 10 | 12 | 16
              size of SCSI READ and/or WRITE commands  issued  on
              sg  device  names.  Default is 10 byte SCSI command

       coe=0 | 1
              attempts direct IO which, if not  available,  falls
              back  to  indirect IO and notes this at completion.
              If     direct     IO      is      selected      and
              /proc/scsi/sg/allow_dio  has  the value of 0 then a
              warning is issued (and indirect IO is performed)

       fua=0 | 1 | 2 | 3
              force unit access bit. When 3, fua is set  on  both
              "if"  and "of", when 2, fua is set on "if", when 1,
              fua is set on "of", when 0, fua is cleared on both.
              6  byte  SCSI  READ and WRITE commands (cdbsz=6) do
              not support the fua bit.  Only active for sg device
              file names

              if given must be the same as bs

              read  from  FILE instead of stdin. A file name of -
              is taken to be stdin

              if given must be the same as bs

       odir=0 | 1
              when set to one opens block devices (e.g. /dev/sda)
              with  the  O_DIRECT  flag.  User memory buffers are
              aligned to the page size when set. The default is 0
              (i.e.  the O_DIRECT flag is not used). The blk_sgio
              flag takes precedence if it is  also  set.  Has  no
              effect on sg, normal or raw files.

              write  to  FILE instead of stdout. A file name of -
              is taken to be stdout.  If FILE is  /dev/null  then
              no  actual  writes  are  performed.  If  FILE  is .
              (period)  then  it  is  treated  the  same  way  as
              /dev/null (this is a shorthand notation)

              skip BLOCKS bs-sized blocks at start of output

              skip BLOCKS bs-sized blocks at start of input

       sync=0 | 1
              when  1,  does SYNCHRONIZE CACHE command on "of" at
              the end of the transfer.  Only active when "of"  is
              a sg device file name

       time=0 | 1
              when 1, times transfer and does throughput calcula­

       defaults  to  0.  This  is for safety!  Raw disk partition
       information can often be found with  fdisk(8)  [the  "-ul"
       argument is useful in this respect].

       BYTES  and  BLOCKS may be followed by the following multi­
       plicative suffixes: c C *1; b B *512; k *1,024; K  *1,000;
       m  *1,048,576;  M  *1,000,000;  g  *1,073,741,824;  and  G

       Data usually gets to the user space in a 2 stage  process:
       first  the  SCSI adapter DMAs into kernel buffers and then
       the sg driver copies this data  into  user  memory  (write
       operations  reverse this sequence).  This is called "indi­
       rect IO" and there is a "dio" option to select "direct IO"
       which  will  DMA  directly  into  user memory. Due to some
       issues "direct IO" is disabled in the sg driver and  needs
       a  configuration  change to activate it. This is typically
       done with "echo 1 > /proc/scsi/sg/allow_dio".

       All informative, warning  and  error  output  is  sent  to
       stderr  so  that dd's output file can be stdout and remain
       unpolluted. If no options are given, then the  usage  mes­
       sage is output and nothing else happens.


       Looks quite similar in usage to dd:

          sg_dd if=/dev/sg0 of=t bs=512 count=1M

       This  will  copy 1 million 512 byte blocks from the device
       associated with  /dev/sg0  (which  should  have  512  byte
       blocks)  to  a  file  called  t.   Assuming  /dev/sda  and
       /dev/sg0 are the same device then the above is  equivalent

          dd if=/dev/sda of=t bs=512 count=1000000

       although dd's speed may improve if bs was larger and count
       was suitably reduced. Using a raw device to  do  something
       similar on a IDE disk:

          raw /dev/raw/raw1 /dev/hda
          sg_dd if=/dev/raw/raw1 of=t bs=512 count=1M

       To copy a SCSI disk partition to an IDE disk partition:

          raw /dev/raw/raw2 /dev/hda3
          sg_dd if=/dev/sg0 skip=10123456 of=/dev/raw/raw2 bs=512

       This assumes a valid partition is found on the  SCSI  disk
       at  the  given  skip block address (past the 5 GB point of
       that disk) and that the partition goes to the end  of  the


       For sg devices this command issues  READ_10  and  WRITE_10
       SCSI  commands  which  are appropriate for disks and CDROM
       players. Those commands are not  formatted  correctly  for
       tape  devices so sg_dd should not be used on tape devices.


       The signal handling has been  borrowed  from  dd:  SIGINT,
       SIGQUIT  and SIGPIPE output the number of remaining blocks
       to be transferred and the records in +  out  counts;  then
       they  have  their default action.  SIGUSR1 causes the same
       information to be output yet the copy continues.  All out­
       put caused by signals is sent to stderr.


       Written by Doug Gilbert and Peter Allworth.


       Report bugs to <dgilbert@interlog.com>.


       Copyright © 2000-2003 Douglas Gilbert
       This  software  is  distributed  under  the GPL version 2.
       There is NO warranty; not even for MERCHANTABILITY or FIT­


       A  POSIX  threads version of this command called sgp_dd is
       in the sg3_utils package. Another version from that  pack­
       age is called sgm_dd and it uses memory mapped IO to speed
       transfers from sg devices.  The lmbench  package  contains
       lmdd which is also interesting.  raw(8), dd(1)

sg3_utils-1.05               May 2003                    SG_DD(8)

More information about the site can be found in the FAQ



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
You can get all the latest Site and Linux news by checking out our news page.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.08 Seconds