The dd command of linux
The dd command stands for “data duplicator” and used for copying and converting data. It is very powerful low level utility of Linux which can do much more like;
- Backup and restore the entire hard disk or partition.
- Backup of MBR (Master Boot Record)
- It can copy and convert magnetic tape format, convert between ASCII and EBCDIC formats, swap bytes and can also convert lower case to upper case.
- It can also be used by Linux kernel make files to make boot images.
Only superuser can run this command because you can face a big data loss due to it’s improper usage, so you should be very careful while working with this utility. At that moment data loss can convert the dd utility as a “data destroyer” for you. That’s why it is recommended that beginners should not use this command on a production machine until they get familiarity on this. You must make sure that target location must have sufficient space while running this command.
SYNTAX
Before we start with some practical work we need to talk about it’s syntax.
dd if=<source file name> of=<target file name> [Options]
We normally do not explain about syntax but this command syntax require some explanation. The syntax is totally different when compared to many Linux commands we know. In this syntax dd is followed by two things
if= –This is a source from where you want to copy data and ‘if’ stands for input-file.
of= –This is a source from where you want to write/paste data and ‘of’ stands for output-file.
[options] –These options include, how fast data should be written, what format etc.
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和obs)。
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。
fdformat 命令,低级格式化软盘。
EXAMPLE
Example 1
: Clone one hard disk to another hard disk. This is useful when we are building many machines with same configuration. We no need to install OS on all the machines. Just install OS and required software on machine then clone with below example.
dd if=/dev/sda of=/dev/sdb
Example 2
: We can take backup of a partition/complete HDD for future restoration.
Backing up a partition to a file(to my home directory as hdadisk.img)
dd if =/dev/sda2 of=~/hdadisk.img
Restoring this image file in to other machine
dd if=hdadisk.img of=/dev/sdb3
Example 3
: Do you feel hdadisk.img is bit big? Use gzip or bzip2 to compress when creating image.
dd if =/dev/sda2 | bzip2 hdadisk.img.bz2
Example 4
: Do you know dd command can be used as file copier as well? Yes, if you don’t have cp command use dd command to copy a file from one location to other.
dd if=/home/imran/abc.txt of=/mnt/abc.txt
Example 5
: Wipe/delete content of a disk so that it will be empty for some one to use it.
dd if=/dev/zero of=/dev/sdb
This will wipe out your second hard disk and every bit is written with zero. you may be interested in learning /dev/null and /dev/zero files which do similar stuff but there is a bit of difference.
HOW WRITING OF A FILE ON HARD DISK WITH DATA HAPPEN?
Normally what ever you write on to a disk at the block level it will write combination of zeros and ones. Hope you know this and what we are doing here is that we are just writing zeros which will clear all 1’s from the hard disk. This eventually makes your disk empty.
Example 6
: What to hide your ass by deleting your personal data. Many people think if we do rm -rf / will do the needful. But we can recover those deletion by using disk recovery tools like Photorec or some forensic tools. But if you want some not to recover your data you have to write random data on your partition where you data resides.
dd if=/dev/random of=/dev/sdb
Do above command multiple times so that it is real hard to recover data. If I am in your place, I will write below shell script to do that.
for i in {1..10};do dd if=/dev/random of=/dev/sdb;done
This will execute dd command 10 times in a row one after the other.
Example 7
: We can create virtual file system with dd command which can be used as swap. To know more about you should know on how to create virtual swap space in Linux .
dd if=/dev/zero of=/swapfile bs=1024 count=200000
where bs
stands for block size and count is nothing but number of such blocks used to crate this swap file.
Make sure you use block sizes in multiples of 1024 bytes which is equal to 1KB. Ff you do not specify block size, dd use a default block size of 512 bytes. Below conventions will work for block sizes.
Example 8
: We can even create ISO files from a CD-ROM or DVD-ROM using dd command.
dd if=/dev/dvd of=/opt/my_linux_image.iso
or with more
dd if=/dev/sr0 of=/home/$user/mycd_image.iso bs=2048 conv=sync
Some other examples:
dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync
This will make clone of one partition sda1 to other sdb1 partition, also used sync option to synchronize the partition
dd if=/dev/sdx of=/dev/sdy bs=64k conv=noerror,sync
This will clone the entire drive, including MBR, all partitions and data where noerrr instructs dd to ignore all read errors while continuing operations. The snyc data offsets stay in sync And bs=sets block size which is set to 64k.
Example 9
: We can even check disk quota using dd command by creating huge files which eats up HDD in no time.
dd if=/dev/zero of=/usr/disk-img/disk-quota.ext3 count=40960
This will create 20MB file (disk image) at said path.
Example 10
: We can even create bootable USB’s using dd command.
dd if=/home/$user/bootimage.img of=/dev/sdc
This will create boot-able USB drive where /dev/sdc is an USB drive.
The dd command of linux的更多相关文章
- Using Android Phone to recover SD card formatted with DD command under linux
Using Android Phone to recover SD card formatted with DD command under linux 1. Formatted a sd card ...
- 6个关于dd命令备份Linux系统的例子
数据丢失带来的损失是相当昂贵的.关键数据的丢失会对各种规模的企业带来影响.有几种方法来备份Linux系统,包括rsync的和rsnapshot等.本文提供有关使用dd命令备份Linux系统的6个实例. ...
- Sending Email from mailx Command in Linux Using Gmail’s SMTP
The mailx or mail command in Linux is still providing service for guys like me, especially when we n ...
- screen command of linux
[screen command of linux] 常用键: 补充: Ctrl-a S # split terminal horizon Ctrl-a TAB # switch to ano ...
- 下载tree命令的源代码 - The Tree Command for Linux Homepage
The Tree Command for Linux Homepage http://mama.indstate.edu/users/ice/tree/ [root@test ~]# ll -as m ...
- (6)dd命令安装Linux
1.面对大批量服务器的安装,人们往往热衷于选择"无人值守安装"的方式,而此方式需要对服务器进行过多的配置,并不适合初学者. 无人值守安装(Kickstart),又称全自动安装,其工 ...
- 使用dd命令备份Linux分区
为了备份分区,开始使用的是Remastersys,但最终生成的iso文件仅有几十K,应该是软件bug,且此软件不再更新,后尝试使用Linux Respin,但github一直连接不上. 其实可以尝试使 ...
- Changing the Color of Linux ls Command 改变Linux的ls命令显示的颜色
Linux command ls basically use the file /etc/DIR_COLORS or /etc/DIR_COLORS.xterm to define the color ...
- linux下创建可引导的U盘系统,使用dd命令进行Linux的ghost
1,通过iso创建可引导的U盘系统. 1.0,格式化U盘为FAT32格式 linux下能够使用命令: mkfs.vfat U盘的设备路径 比如: mkfs.vfat /dev/sdb 当中U盘的路径能 ...
随机推荐
- [Ctsc2014]企鹅QQ
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description P ...
- java用于控制可见性的4个访问修饰符
仅对本类可见——private 对所有类可见——public 对本包的所有子类可见——protected 对本包可见——默认(很遗憾)不需要修饰符
- 51nod 1120 机器人走方格 V3
N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只能向右或向下走. 并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法? 由于方法数量可能很大,只需要输出Mod 1 ...
- 在Java中,你真的会日期转换吗
1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormat is a concrete class for form ...
- 【leetcode 简单】第十六题 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...
- spring boot 加载原理
spring boot quick start 在springBoot里面,很吸引的一个特征就是可以直接把应用打包成jar/war包形式.然后jar/war包可以直接运行的.不需要再配置web Ser ...
- DNSLOG在渗透测试中的玩法儿
首先了解一下DNS是啥??? DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读 ...
- uboot makefile构建分析-续
前言 这篇博文是 uboot makefile构建分析的续篇,继续分析uboot构建u-boot.bin的过程 构建u-boot.bin过程分析 makefile一开始,就是确定链接脚本.在构建ubo ...
- 省市区ajax联动
function setCity1(){ var areaId1 = $('#areaId1').val(); var cityId1 = $('#cityId1'); var cityOpt = $ ...
- C/C++——[02] 运算符和表达式
C/C++中表示数据运算的符号称为“运算符”.运算符所用到的操作数个数,称为运算符的“目数”. C/C++语言的运算符有赋值运算符.算术运算符.逻辑运算符.位运算符等多类. 将变量.常量等用运算符连接 ...