| DD(1) | General Commands Manual | DD(1) | 
dd — convert and
    copy a file
| dd | [operands ...] | 
The dd utility copies the standard input
    to the standard output. Input data is read and written in 512-byte blocks.
    If input reads are short, input from multiple reads are aggregated to form
    the output block. When finished, dd displays the
    number of complete and partial input and output blocks and truncated input
    records to the standard error output.
The following operands are available:
bs=nibs and
      obs operands. If no conversion values other than
      noerror, notrunc or
      sync are specified, then each input block is
      copied to the output as a single block without any aggregation of short
      blocks.cbs=ncount=nfiles=nfillchar=cnoerror and sync modes,
      fill with the specified ASCII character, rather than using a space or
      NUL.ibs=nif=fileiflag=value[,value
    ...]value is one of the symbols from the
      following list.
    fullblockcount limits the number of times
          read(2) is called on the input rather than the
          number of blocks copied in full. May not be combined with
          conv=sync.directiseek=nskip=n.obs=nof=filenotrunc conversion value is specified. If an
      initial portion of the output file is seeked past (see the
      oseek operand), the output file is truncated at
      that point.oflag=value[,value
    ...]value is one of the symbols from the
      following list.
    
  oseek=nseek=n.seek=nNUL bytes.skip=nspeed=nstatus=valuevalue is one of the symbols from the
      following list.
    
  conv=value[,value
    ...]value is one of the symbols from the
      following list.
    ascii,
        oldasciiunblock value except that
          characters are translated from EBCDIC to ASCII before the records are
          converted. (These values imply unblock if the
          operand cbs is also specified.) There are two
          conversion maps for ASCII. The value ascii
          specifies the recommended one which is compatible with
          AT&T System V UNIX. The value
          oldascii specifies the one used in historic
          AT&T UNIX and
          pre-4.3BSD-Reno
          systems.blockcbs operand. Input records
          shorter than the conversion record size are padded with spaces. Input
          records longer than the conversion record size are truncated. The
          number of truncated input records, if any, are reported to the
          standard error output at the completion of the copy.ebcdic,
        ibm, oldebcdic,
        oldibmblock value except that
          characters are translated from ASCII to EBCDIC after the records are
          converted. (These values imply block if the
          operand cbs is also specified.) There are four
          conversion maps for EBCDIC. The value ebcdic
          specifies the recommended one which is compatible with
          AT&T System V UNIX. The value
          ibm is a slightly different mapping, which is
          compatible with the AT&T System V
          UNIX ibm value. The values
          oldebcdic and oldibm
          are maps used in historic AT&T UNIX and
          pre-4.3BSD-Reno
          systems.fsynclcasepareven,
        parnone, parodd,
        parsetnoerrorsync conversion is also specified, any missing
          input data will be replaced with NUL bytes (or
          with spaces if a block oriented conversion value was specified) and
          processed as a normal input buffer. If the
          fillchar option is specified, the fill
          character provided on the command line will override the automatic
          selection of the fill character. If the sync
          conversion is not specified, the input block is omitted from the
          output. On input files which are not tapes or pipes, the file offset
          will be positioned past the block in which the error occurred using
          lseek(2).notruncdd. The
          notrunc value is not supported for tapes.osyncbs=n block size
          specification.sparseNUL bytes, try to seek the output file by the
          required space instead of filling them with
          NULs, resulting in a sparse file.swabsyncNUL bytes are used.ucaseunblockcbs operand. Any trailing
          space characters are discarded and a newline character is
        appended.Where sizes or speed are specified, a decimal, octal, or
    hexadecimal number of bytes is expected. If the number ends with a
    “b”,
    “k”,
    “m”,
    “g”,
    “t”,
    “p”, or
    “w”, the number is multiplied by 512,
    1024 (1K), 1048576 (1M), 1073741824 (1G), 1099511627776 (1T),
    1125899906842624 (1P) or the number of bytes in an integer, respectively.
    Two or more numbers may be separated by an
    “x” to indicate a product.
When finished, dd displays the number of
    complete and partial input and output blocks, truncated input records and
    odd-length byte-swapping blocks to the standard error output. A partial
    input block is one where less than the input block size was read. A partial
    output block is one where less than the output block size was written.
    Partial output blocks to tape devices are considered fatal errors.
    Otherwise, the rest of the block will be written. Partial output blocks to
    character devices will produce a warning message. A truncated input block is
    one where a variable length record oriented conversion value was specified
    and the input line was too long to fit in the conversion record or was not
    newline terminated.
Normally, data resulting from input or conversion or both are aggregated into output blocks of the specified size. After the end of input is reached, any remaining output is written as a block. This means that the final output block may be shorter than the output block size.
If dd receives a
    SIGINFO (see the status
    argument for stty(1)) signal, the current input and output
    block counts will be written to the standard error output in the same format
    as the standard completion message. If dd receives a
    SIGINT signal, the current input and output block
    counts will be written to the standard error output in the same format as
    the standard completion message and dd will
  exit.
The dd utility exits 0 on success,
    and >0 if an error occurs.
Check that a disk drive contains no bad blocks:
dd if=/dev/ada0 of=/dev/null
  bs=1mDo a refresh of a disk drive, in order to prevent presently recoverable read errors from progressing into unrecoverable read errors:
dd if=/dev/ada0 of=/dev/ada0
  bs=1mRemove parity bit from a file:
dd if=file conv=parnone
  of=file.txtCheck for (even) parity errors on a file:
dd if=file conv=pareven | cmp -x -
  fileTo create an image of a Mode-1 CD-ROM, which is a commonly used format for data CD-ROM disks, use a block size of 2048 bytes:
dd if=/dev/cd0 of=filename.iso
  bs=2048Write a filesystem image to a memory stick, padding the end with zeros, if necessary, to a 1MiB boundary:
dd if=memstick.img of=/dev/da0 bs=1m
  conv=noerror,syncThe dd utility is expected to be a
    superset of the IEEE Std 1003.2
    (“POSIX.2”) standard. The files
    and status operands and the
    ascii, ebcdic,
    ibm, oldascii,
    oldebcdic and oldibm values
    are extensions to the POSIX standard.
A dd command appeared in
    Version 5 AT&T UNIX.
| May 19, 2021 | Mac OS X 12 |