Linux / Unix: dd Command Clone Hard Disks and Partitions

Channel: nixcraftcom   |   2012/08/25
Play Video
1
Linux / Unix: dd Command Clone Hard Disks and Partitions
Linux / Unix: dd Command Clone Hard Disks and Partitions
::2012/08/25::
Play Video
2
Cloning Partition With dd (Unix/Linux)
Cloning Partition With dd (Unix/Linux)
::2014/01/17::
Play Video
3
Copy One Drive to Another Using the dd Command in Linux - Ubuntu
Copy One Drive to Another Using the dd Command in Linux - Ubuntu
::2011/02/28::
Play Video
4
Dd Unix   Wiki Article
Dd Unix Wiki Article
::2013/11/02::
Play Video
5
Shell Scripting Tutorial 14  Convert & Copy Files With
Shell Scripting Tutorial 14 Convert & Copy Files With 'dd'
::2013/10/24::
Play Video
6
Linux Terminal Commands DD
Linux Terminal Commands DD
::2013/02/12::
Play Video
7
Imaging a Linux Machine with the dd Command.wmv
Imaging a Linux Machine with the dd Command.wmv
::2012/12/17::
Play Video
8
dd, awk, less を使ってPDFからテキスト抽出 (part 1/4)
dd, awk, less を使ってPDFからテキスト抽出 (part 1/4)
::2010/02/13::
Play Video
9
Ubuntu dd command to create .iso from DVD
Ubuntu dd command to create .iso from DVD
::2010/07/24::
Play Video
10
dd Demonstration
dd Demonstration
::2014/02/19::
Play Video
11
Unix and Linux
Unix and Linux
::2014/03/29::
Play Video
12
ITS 224 Linux Ch 5 Part 2   comm diff
ITS 224 Linux Ch 5 Part 2 comm diff
::2012/10/08::
Play Video
13
ISO-Images in Mac OS X und Unix-Derivaten erstellen
ISO-Images in Mac OS X und Unix-Derivaten erstellen
::2011/01/30::
Play Video
14
dd
dd
::2013/05/07::
Play Video
15
Linux Tips and Tricks : Convert from Dos (windows) format to linux (unix)
Linux Tips and Tricks : Convert from Dos (windows) format to linux (unix)
::2014/03/02::
Play Video
16
unix and linux
unix and linux
::2014/03/31::
Play Video
17
Бедная кошка=DD не кормят, не поят...
Бедная кошка=DD не кормят, не поят...
::2014/03/12::
Play Video
18
DD-1138 Jessiebel Mudai
DD-1138 Jessiebel Mudai
::2013/06/07::
Play Video
19
DD-750
DD-750
::2012/04/30::
Play Video
20
Clone of DD
Clone of DD
::2011/05/18::
Play Video
21
huyase  DD
huyase DD
::2014/03/08::
Play Video
22
05  Unix Shell Scripting Tutorial   Conditional Code Part 3
05 Unix Shell Scripting Tutorial Conditional Code Part 3
::2012/07/06::
Play Video
23
DD BOY 2
DD BOY 2
::2013/05/18::
Play Video
24
DD HAHA DD
DD HAHA DD
::2011/05/11::
Play Video
25
Ржака :DD
Ржака :DD
::2013/07/03::
Play Video
26
VMware vSphere 5.1 - 2.2 Virtual Router DD-WRT
VMware vSphere 5.1 - 2.2 Virtual Router DD-WRT
::2012/10/28::
Play Video
27
iso to usb - bootable - easy - all linux - unix
iso to usb - bootable - easy - all linux - unix
::2014/01/25::
Play Video
28
How to install DD-WRT on Linksys E4200 Router
How to install DD-WRT on Linksys E4200 Router
::2012/02/08::
Play Video
29
citizen d d
citizen d d
::2012/03/26::
Play Video
30
Raspberry Pi - Menulis image raspbian wheezy ke SD card
Raspberry Pi - Menulis image raspbian wheezy ke SD card
::2012/11/06::
Play Video
31
Unix and Linux
Unix and Linux
::2014/03/30::
Play Video
32
C Programming Tutorial (E=MC^2 calculator)
C Programming Tutorial (E=MC^2 calculator)
::2013/04/17::
Play Video
33
Accessing Linux Partition Using Rescue Disk in RHCE-5
Accessing Linux Partition Using Rescue Disk in RHCE-5
::2014/03/10::
Play Video
34
IMPORTANT INFO! :DD
IMPORTANT INFO! :DD
::2011/12/27::
Play Video
35
AT&T Unix PC booting
AT&T Unix PC booting
::2009/04/26::
Play Video
36
The ABC
The ABC's of UNIX
::2010/11/30::
Play Video
37
Download SolydK 64bit (Iso-Image) und Iso-Image als DVD brennen mit Brasero
Download SolydK 64bit (Iso-Image) und Iso-Image als DVD brennen mit Brasero
::2013/06/18::
Play Video
38
3.(FORENSICS) using DD command to take image and hash values
3.(FORENSICS) using DD command to take image and hash values
::2013/11/17::
Play Video
39
Why Do I Suck At This Game So Much Now?. Unix Plays: Super Mario 64
Why Do I Suck At This Game So Much Now?. Unix Plays: Super Mario 64
::2014/03/21::
Play Video
40
Video Demo: Unix Segment Ash Snare Drum w/ Ash Hoops 7x14
Video Demo: Unix Segment Ash Snare Drum w/ Ash Hoops 7x14
::2014/03/25::
Play Video
41
Vodge Diper & UNIX (UK) - Down Like Spock (Original Mix) [Big Alliance Records]
Vodge Diper & UNIX (UK) - Down Like Spock (Original Mix) [Big Alliance Records]
::2013/10/03::
Play Video
42
Tabby Cat   Wiki Article
Tabby Cat Wiki Article
::2013/11/02::
Play Video
43
نظام المحاسب الاول - حل مشكلة صيغة التاريخ dd/mm/yy
نظام المحاسب الاول - حل مشكلة صيغة التاريخ dd/mm/yy
::2012/09/25::
Play Video
44
Shell Scripting Tutorial 59  Communicate with other users using
Shell Scripting Tutorial 59 Communicate with other users using 'write'
::2013/10/25::
Play Video
45
Programming Tools #1 - Power use of UNIX - Dan North
Programming Tools #1 - Power use of UNIX - Dan North
::2013/11/18::
Play Video
46
MB CompactFlash
MB CompactFlash
::2008/07/11::
Play Video
47
Mariana Fodorean Cantare solo 18 08 2013 DD
Mariana Fodorean Cantare solo 18 08 2013 DD
::2013/08/26::
Play Video
48
HowTo: Monitor and Log Network Traffic on Linux / Unix Using vnStat
HowTo: Monitor and Log Network Traffic on Linux / Unix Using vnStat
::2012/11/20::
Play Video
49
DD website commands
DD website commands
::2011/04/03::
Play Video
50
Ch 27 Problem 39
Ch 27 Problem 39
::2012/09/29::
NEXT >>
RESULTS [51 .. 101]
From Wikipedia, the free encyclopedia
Jump to: navigation, search

dd is a command on Unix and Unix-like operating systems whose primary purpose is to convert and copy a file.[1]

On Unix, device drivers for hardware (such as hard disks) and special device files (such as /dev/zero and /dev/random) appear in the file system just like normal files; dd can also read and/or write from/to these files, provided that function is implemented in their respective driver. As a result, dd can be used for tasks such as backing up the boot sector of a hard drive, and obtaining a fixed amount of random data. The dd program can also perform conversions on the data as it is copied, including byte order swapping and conversion to and from the ASCII and EBCDIC text encodings.[2]

The name dd may be an allusion to the DD statement found in IBM's Job Control Language (JCL),[3] where the initials stand for "Data Description."[4] The command's syntax resembles the JCL statement more than it does other Unix commands, so the syntax may have been a joke.[3] Another explanation for the command's name is that "cc" (for "convert and copy", as in the command's description) was already taken by the C compiler.[citation needed]

The dd command is specified by IEEE Std 1003.1-2008, which is part of the Single UNIX Specification.

Usage[edit]

The command line syntax of dd differs from many other Unix programs, in that it uses the syntax option=value for its command line options, rather than the more-standard --option value or -option=value formats. By default, dd reads from STDIN and writes to STDOUT, but these can be changed by using the if (input file) and of (output file) options.

Usage varies across different operating systems. Also, certain features of dd will depend on the computer system capabilities, such as dd's ability to implement an option for direct memory access. Sending a SIGINFO signal (or a USR1 signal on Linux) to a running dd process makes it print I/O statistics to standard error once and then continue copying (note that signals may terminate the process on OS X). dd can read standard input from the keyboard. When end-of-file (EOF) is reached, dd will exit. Signals and EOF are determined by the software. For example, Unix tools ported to Windows vary as to the EOF: Cygwin uses <ctrl-d> (the usual Unix EOF) and MKS Toolkit uses <ctrl-z> (the usual Windows EOF).

In spirit with the Unix philosophy, dd does one thing (and may be considered to do it "well" ). Unlike a sophisticated and highly abstracted utility, dd has no algorithm other than in the low-level decisions of the user concerning how to vary the run options. Often, the options are changed for each run of dd in a multi-step process to solve a computer problem.

Output messages[edit]

The GNU variant of dd as supplied with coreutils on Linux does not describe the format of the messages displayed on standard output on completion. However, these are described by other implementations, e.g. that with BSD.

Each of the "Records in" and "Records out" lines shows the number of complete blocks transferred + the number of partial blocks, e.g. because the physical medium ended before a complete block was read, or a physical error prevented reading the complete block.

Block size[edit]

A block is a unit measuring the number of bytes that are read, written, or converted at one time. Command line options can specify a different block size for input/reading (ibs) compared to output/writing (obs), though the block size (bs) option will override both ibs and obs. The default value for both input and output block sizes is 512 bytes (the traditional block size of disks, and POSIX-mandated size of "a block"). The count option for copying is measured in blocks, as are both the skip count for reading and seek count for writing. Conversion operations are also affected by the "conversion block size" (cbs).

For some uses of the dd command, block size may have an effect on performance. For example, when recovering data from a hard disk, a small block size will generally cause the most bytes to be recovered. Issuing many small reads is an overhead and may be non-beneficial to execution performance. For greater speed during copy operations, a larger block size may be used. However, because the amount of bytes to copy is given by bs×count, it is impossible to copy a prime number of bytes in one go without going with one of two bad choices, bs=N count=1 (memory use) or bs=1 count=N (read request overhead). Alternative programs (see below) permit specifying bytes rather than blocks.
When dd is used for network transfers, the block size may have also an impact on packet size, depending on the network protocol used.

The value provided for block size options is interpreted as a decimal (base 10) integer and can also include suffixes to indicate multiplication. The suffix w means multiplication by 2, b means 512, k means 1024, M means 1024 × 1024, G means 1024 × 1024 × 1024, and so on. Additionally, some implementations understand the x character as a multiplication operator for both block size and count parameters.

For example, a block size such as bs=2x80x18b is interpreted as 2 × 80 × 18 × 512 = 1474560 bytes, the exact size of a 1440 KiB floppy disk.

Uses[edit]

The dd command can be used for a variety of purposes.

Data transfer[edit]

dd can duplicate data across files, devices, partitions and volumes. The data may be input or output to and from any of these; but there are important differences concerning the output when going to a partition. Also, during the transfer, the data can be modified using the conv options to suit the medium.

An attempt to copy the entire disk using cp may omit the final block if it is of an unexpected length[citation needed]; whereas dd may succeed. The source and destination disks should have the same size.

Data transfer forms of dd
dd if=/dev/sr0 of=myCD.iso bs=2048 conv=noerror,sync create an ISO disk image from a CD-ROM.
dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=noerror Clone one partition to another
dd if=/dev/ad0 of=/dev/ad1 bs=1M conv=noerror Clone a hard disk "ad0" to "ad1".

The noerror option means to keep going if there is an error. The sync option means to pad the output blocks.

Master boot record backup and restore[edit]

It is possible to repair a master boot record. It can be transferred to and from a repair file.

To duplicate the first two sectors of a floppy drive:

dd if=/dev/fd0 of=MBRboot.img bs=512 count=2

To create an image of the entire x86 master boot record (including a MS-DOS partition table and MBR magic bytes):

dd if=/dev/sda of=MBR.img bs=512 count=1

To create an image of only the boot code of the master boot record (without the partition table and without the magic bytes required for booting):

dd if=/dev/sda of=MBR_boot.img bs=446 count=1

Data modification[edit]

dd can modify data in place.

Overwrite the first 512 bytes of a file with null bytes:

dd if=/dev/zero of=path/to/file bs=512 count=1 conv=notrunc

The notrunc conversion option means do not truncate the output file — that is, if the output file already exists, just replace the specified bytes and leave the rest of the output file alone. Without this option, dd would create an output file 512 bytes long.

To duplicate a disk partition as a disk image file on a different partition:

dd if=/dev/sdb2 of=partition.image bs=4096 conv=noerror

Disk wipe[edit]

For security reasons, it is sometimes necessary to have a disk wipe of a discarded device.

To check to see if a drive has data on it, send the output to standard out.

dd if=/dev/sda

To wipe a disk by writing zeros:

dd if=/dev/zero of=/dev/sda bs=4k

When compared to the data modification example above, notrunc conversion option is not required as it has no effect when the dd's output file is a block device.[5]

The bs=4k option makes dd read and write 4 kilobytes at a time. For modern systems, an even greater block size may be beneficial due to the transport capacity (think RAID systems). Note that filling the drive with random data will always take a lot longer than zeroing the drive, because the random data must be rendered by the CPU and/or HWRNG first, and different designs have different performance characteristics. (The PRNG behind /dev/urandom may be slower than libc's.) On most relatively modern drives, zeroing the drive will render any data it contains permanently irrecoverable.[6]

Zeroing the drive will render any data it contains irrecoverable by software; however it still may be recoverable by special laboratory techniques.

The shred program provides an alternate method for the same task, and finally, the wipe[7] program present in many Linux distributions provides an elaborate tool (the one that does it "well", going back to the Unix philosophy mentioned before) with many ways of clearing.

Data recovery[edit]

The history of open-source software (OSS) for data recovery and restoration of files, drives, and partitions started with GNU dd in 1984, with one block size per dd process, and no recovery algorithm other than the user's interactive session running one form of dd after another. Then, a C program was authored October 1999 called dd_rescue. It has two block sizes in its algorithm. But the author of the 2003 shell script dd_rhelp that enhances dd_rescue's data recovery algorithm, now recommends GNU ddrescue,[8] a C++ program that was initially released in 2004 and is now in most Linux distributions. GNU ddrescue has the most sophisticated block-size-changing algorithm available in OSS.[9] (The names ddrescue and dd_rescue are similar, yet they are different programs. Because of this, alternate names for more unambiguous distinguishing is used; names used are "addrescue" (name on freecode.com), "gddrescue" (Debian package name) and "gnu_ddrescue" (openSUSE package name).)

GNU ddrescue is stable and safe.[10]

Another open source program called savehd7 uses a sophisticated algorithm, but it also requires the installation of its own programming-language interpreter.

Benchmarking drive performance[edit]

To make drive benchmark test and analyze the sequential (and usually single-threaded) system read and write performance for 1024-byte blocks :

dd if=/dev/zero bs=1024 count=1000000 of=file_1GB
dd if=file_1GB of=/dev/null bs=1024

Generating a file with random data[edit]

To make a file of 100 random bytes using the kernel random driver:

dd if=/dev/urandom of=myrandom bs=100 count=1

Converting a file to upper case[edit]

To convert a file to uppercase:

dd if=filename of=filename1 conv=ucase

Creating empty files of arbitrary size[edit]

Create a 1 GiB sparse file, or resize an existing file to 1 GiB without overwriting:

dd if=/dev/zero of=mytestfile.out bs=1 count=0 seek=1G

(A more modern tool for this is fallocate or truncate, both shipped with GNU coreutils.)

Limitations[edit]

Seagate documentation warns, "Certain disc utilities, such as DD, which depend on low-level disc access may not support 48-bit LBAs until they are updated".[11][citation needed] Using ATA harddrives over 128 GiB requires 48-bit LBA. However, in Linux, dd uses the kernel to read or write to raw device files.[a] Support for 48-bit LBA has been present since version 2.4.23 of the kernel, released in 2003.[12][13]

It is jokingly said that dd stands for "destroy disk" or "delete data", since when used for low-level operations on hard disks, a small mistake such as reversing the input file and output file parameters could result in the loss of some or all data on a disk.[2]

Dcfldd[edit]

dcfldd is a fork of dd that is an enhanced version developed by Nick Harbour; who at the time was working for the United States' Department of Defense Computer Forensics Lab.[14][15][16] Compared to dd, dcfldd allows for more than one output file, supports simultaneous multiple checksum calculations, provides a verification mode for file matching, and can display of the percentage progress of an operation.

See also[edit]

Notes[edit]

  1. ^ This is verifiable with strace.

References[edit]

  1. ^ Bell Laboratories. "dd man page". Retrieved 2009-02-25. 
  2. ^ a b Sam Chessman. "How and when to use the dd command?". CodeCoffee. Retrieved 2008-02-19. 
  3. ^ a b Eric S. Raymond. "dd". Retrieved 2008-02-19. 
  4. ^ See this old discussion "The Unix "dd" command". alt.folklore.computers. Retrieved 2011-07-05. 
  5. ^ "linux - Why using conv=notrunc when cloning a disk with dd?". Stack Overflow. 2013-12-11. Retrieved 2014-03-24. 
  6. ^ Wright, Craig; Kleiman, Dave; Sundhar R.S., Shyaam (2008). "Overwriting Hard Drive Data: The Great Wiping Controversy". Lecture Notes in Computer Science. Information Systems Security 5352: 243–257. doi:10.1007/978-3-540-89862-7_21. Retrieved 7 March 2012. 
  7. ^ "Wipe: Secure File Deletion". Wipe.sf.net. Retrieved 2014-03-24. 
  8. ^ LAB Valentin (19 September 2011). "dd_rhelp author's repository". "Important note : For some times, dd_rhelp was the only tool (AFAIK) that did this type of job, but since a few years, it is not true anymore: Antonio Diaz did write a ideal replacement for my tool: GNU 'ddrescue'." 
  9. ^ "Damaged Hard Disk". www.cgsecurity.org. Retrieved 2008-05-20. 
  10. ^ "Interview with GNU ddrescue's Antonio Diaz Diaz". Blue-GNU. Archived from the original on 2008-04-15. Retrieved 2008-12-06. 
  11. ^ Windows 137GB (128 GiB) Capacity Barrier - Seagate Technology (March 2003)
  12. ^ "ChangeLog-2.4.23". www.kernel.org. Retrieved 2009-12-07. 
  13. ^ Linux-2.4.23 released Linux kernel mailing list, 2003.
  14. ^ "DCFLDD at Source Forge". Source Forge. Retrieved 2013-08-17. 
  15. ^ Jeremy Faircloth, Chris Hurley (2007). Penetration Tester's Open Source Toolkit. Syngress. pp. 470–472. ISBN 9780080556079. 
  16. ^ Jack Wiles, Anthony Reyes (2011). The Best Damn Cybercrime and Digital Forensics Book Period. Syngress. pp. 408–411. ISBN 9780080556086. 

External links[edit]


Wikipedia content is licensed under the GFDL License

Mashpedia enables any individual or company to promote their own Youtube-hosted videos or Youtube Channels, offering a simple and effective plan to get them in front of our engaged audience.

Want to learn more? Please contact us at: hello@mashpedia.com

Powered by YouTube
LEGAL
  • Mashpedia © 2014