Linux DD命令及实例

DD命令

基本信息
编辑 播报
在Unix上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)就像普通文件一样,出现在文件系统中;只要在各自的驱动程序中实现了对应的功能,dd也可以读取自和/或写入到这些文件。这样,dd也可以用在备份硬件的引导扇区、获取一定数量的随机数据等任务中。dd程序也可以在复制时处理数据,例如转换字节序、或在ASCIIEBCDIC编码间互换。
dd的名字可能来源于IBM的工作控制语言(JCL)中的DD语句,意为“Data Description”(数据描述)的缩写。该命令的语句与JCL中的相似,而与其他Unix命令较不同,因此这可能是个玩笑。另一种解释是“cc”(根据命令自身的描述,为“convert and copy”(转换和复制))已经被C语言编译器(C compiler)所占。
dd命令由单一UNIX规范的一部分,IEEE标准1003.1-2008所规定。
参考:https://baike.baidu.com/item/dd%E5%91%BD%E4%BB%A4/1063989

DD命令

1.将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd
2.将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image
3.将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb
4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz
5.将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb
6.备份磁盘开始的512个字节大小的MBR信息到指定文件
dd if=/dev/hda of=/root/image count=1 bs=512
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
恢复:
dd if=/root/image of=/dev/hda
7.备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k
(即块大小为1.44M)
8.拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
(指定块大小为1k)
9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
10.增加swap分区文件大小
第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:
mkswap /swapfile
第三步:启用这个swap文件:
swapon /swapfile
第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile swap swap defaults 0 0
11.销毁磁盘数据
dd if=/dev/urandom of=/dev/hda1
注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
12.测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
13.确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
14.修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic fluxpoint。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。
15.dd命令做usb启动盘
dd if=xxx.iso of=/dev/sdb bs=1M
root用户或者sudo,用以上命令前必须卸载u盘,sdb是你的u盘,bs=1M是块的大小,后面的数值大,写的速度相对快一点,但也不是无限的,我一般选2M,注意,执行命令后很快完成,但u盘还在闪,等不闪了,安全移除。

实操案例

把Ubuntu22.4桌面的整个磁盘克隆到新的磁盘中去,首先我们制作一个Ubuntu的系统引导U盘,然后从U盘引导,进入系统界面后,按Cotrl+Alt+F键,打开命令提示符,设置root账号密码,不然下面无法执行DD相关命令

sudo passwd root 密码输入两次
Linux DD命令及实例

插入U盘或挂在其它磁盘,这里把磁盘挂载到mnt目录

挂载远程SMB,NFS目录
mount -t cifs -o username="zxb",password="1234qwer" //192.168.0.200/download/ /root/portainer_data/downloads/  
sudo mount -t nfs 192.168.3.199:/mnt/Hao0564/NFS/downloads/ /mydocker/downloads/  
Ubuntu22.4挂载
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during curtin installation
/dev/disk/by-uuid/4c799174-0626-42ea-9bba-92be6173efbc / ext4 defaults 0 1
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/4f26e9f2-de58-4cb7-b331-955266f0d457 /boot ext4 defaults 0 1
/swap.img	none	swap	sw	0	0
UUID="2f0eeba3-a222-42e6-b7f3-4d3ec20a9259" /www/wwwroot/myzhangxiubing.tpddns.cn/data/myzhangxiubing/files/BackUp ext4 defaults 0 0
UUID="ee15ec99-8c1b-4d7b-b41c-e866f3187b89" /home/Back ext4 defaults 0 0
  • dd if=/dev/nvme0n1p7 of=/media/ubuntu/备份数据盘/Z590_Ubuntu22.4.2Bak.image bs=128k status=progress

centos8.3挂载磁盘:https://www.hao0564.com/126.html

centos7.9挂载远程Samba共享文件夹:https://www.hao0564.com/1785.html

2 评论

  1. 把镜像DD到U盘
    root@myzhangxiubing-Z590-VISION-G:/media/myzhangxiubing/BackUP# dd if=/media/myzhangxiubing/BackUP/HyFangSheke_Bak.image of=/dev/sda bs=128k status=progress

  2. 把M.2磁盘DD成镜像文件Cunshi_KyLin_Win10_250G.image
    dd if=/dev/sdd of=/www/wwwroot/myzhangxiubing.tpddns.cn/data/myzhangxiubing/files/BackUp/DD备份/Cunshi_KyLin_Win10_250G.image bs=128 status=progress

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注