dd硬盘复制 linux_linux dd复制硬盘 - CSDN
  • dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份...

    dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。

    建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。

    语法

    dd(选项)

    选项

    bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;
    cbs=<字节数>:转换时,每次只转换指定的字节数;
    conv=<关键字>:指定文件转换的方式;
    count=<区块数>:仅读取指定的区块数;
    ibs=<字节数>:每次读取的字节数;
    obs=<字节数>:每次输出的字节数;
    of=<文件>:输出到文件;
    seek=<区块数>:一开始输出时,跳过指定的区块数;
    skip=<区块数>:一开始读取时,跳过指定的区块数;
    --help:帮助;
    --version:显示版本信息。

    实例

    [root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
    
    [root@localhost text]# du -sh sun.txt 
    1.1M    sun.txt

    该命令创建了一个1M大小的文件sun.txt,其中参数解释:

    • if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。
    • of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。
    • bs 代表字节为单位的块大小。
    • count 代表被复制的块数。
    • /dev/zero 是一个字符设备,会不断返回0值字节(\0)。

    块大小可以使用的计量单位表

    单元大小代码
    字节(1B)c
    字节(2B)w
    块(512B)b
    千字节(1024B)k
    兆字节(1024KB)M
    吉字节(1024MB)G

    用fdisk -l查看当前所有分区信息(记得用root,否则执行了啥也看不到),如:

    Device Boot      Start         End      Blocks   Id  System/dev/sdb1            2048     1002047      500000   83  Linux/dev/sdb2         1002048    12002047     5500000   83  Linux/dev/sdb3        12002048    13002047      500000   83  Linux/dev/sdb4        13002048    15002047     1000000   83  Linux

    上面是我为了方便写文档而做的分区,可以看到Blocks十分工整,那是故意而为之的。

    全盘拷贝的命令:

    dd if=/dev/sdb  of=/dev/sdc

    分区拷贝:

    dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sdb of=name.img

    以上为例:

    dd bs=512 count=15002048 if=/dev/sdb of=ghost_linux_latelee.img

    由于ghost_linux_latelee.img会很大,可以在拷贝时将其压缩:

    dd bs=512 count=15002048 if=/dev/sdb | gzip -9 > ghost_linux_latelee.img.gz

    上面所做的,就是传说的系统“备份”,或叫“系统克隆”。

    对应的,有系统恢复的操作。命令如下:

    dd if=ghost_linux_latelee.img of=/dev/sda

    如果是压缩包,则命令为:

    gzip -c -d ghost_linux_latelee.img.gz | dd of=/dev/sda

    在上面的拷贝过程中,并不知道拷贝了多少,只有最终结束时才显示出时间、拷贝速度。为了查看进度,可以在另一个终端输入(记得用root):

    watch -n 5 killall -USR1 dd

    (注:killall并不是传说中把进程kill掉,而是发送一个指定的信号到指定的进程)

    之后,就能执行dd的终端看到进度了,如:

    58299+0 records in58298+0 records out29848576 bytes (30 MB) copied, 4.67728 s, 6.4 MB/s161403+0 records in161402+0 records out82637824 bytes (83 MB) copied, 9.69359 s, 8.5 MB/s238651+0 records in238650+0 records out122188800 bytes (122 MB) copied, 14.7105 s, 8.3 MB/s

    备注:

    用dd的方式,得到的镜像文件十分庞大——取决于所要做的系统的大小。比如,拷贝4GB的分区,真的就是拷贝4GB,即使是用gzip压缩,也压缩不了多少,文件依然很大。

    另外dd的方式也消除了我之前的担心,因为现在的Linux发行版的分区使用硬盘uuid作为标识,而不是/dev/sda1这种格式,据说uuid更好。但用dd拷贝,竟然连硬盘的uuid也一一拷贝,毫无变化,这的确让我吃惊。不过,目前看没什么时间研究dd了。

    PS:使用dd命令,可以读取硬盘的mbr扇区,示例如下:

    dd if=/dev/sdb of=mbr.bin bs=512 count=1
    
    展开全文
  • dd实现linux硬盘备份

    千次阅读 2016-11-26 14:33:18
    从公司拿了一块1T的硬盘,插入移动硬盘盒(淘宝上搞的一个移动硬盘盒,40元),加电识别,格式化,开始硬盘复制。市面上针对数据备份的软件不计其数,我们不讨论他们的优缺点。但是如果你正在使用Linux(其实如果你...

    一个去年的老本,500G硬盘,空间各种捉急,准备迁移到公司的台式机上,却发现Linux上迁移环境没有Windows下那么方便,只能复制整块硬盘了。

    从公司拿了一块1T的硬盘,插入移动硬盘盒(淘宝上搞的一个移动硬盘盒,40元),加电识别,格式化,开始硬盘复制。

    市面上针对数据备份的软件不计其数,我们不讨论他们的优缺点。但是如果你正在使用Linux(其实如果你没有使用Linux,而是通过一些 Linux live CD来启动计算机,我想也是一样的),那么恭喜你,你可以简单地使用系统命令“dd”来完成磁盘克隆,分区克隆或者磁盘或分区到磁盘镜像的复制。一般情况 下,这几个任务已经可以满足你日常工作的需要了。
    先说明几个概念,在Linux上,一块硬盘或者一个分区都由一个目录表示,一般存在于系统根目录的/dev/之下。例如/dev/hda代表你的第一块 IDE硬盘,/dev/sdb代表第二块SCSI硬盘,/dev/fd0代表系统的软盘驱动器等等。同样每块硬盘上的分区也有独特的目录名,例如/dev /hda1表示你第一块硬盘上的第一个分区(至于这个分区上有什么东西在进行备份操作的时候并不重要)。

    1. 磁盘克隆
    也就是把整个硬盘复制一份。当然你首先需要在计算机上在接上一块新硬盘,并让系统识别。例如这块硬盘可能被识别为/dev/sdb,原有硬盘叫/dev/sda. 然后你可以在linux命令行上简单地执行:
    dd if=/dev/sda of=/dev/sdb
    对就这么简单,此命令完成后,你的第二块硬盘上将有一个和第一块硬盘一模一样的副本,也是可以启动的。因为dd操作就是简单的按字节复制,什么分区表啊,MBR啊统统照搬。
    当然你也可以做一些微调,来定制一下克隆操作。例如你可能希望把硬盘上的内容全部备份到一个磁盘文件中,而不是另一块新硬盘,你可以
    dd if=/dev/sda of=~/disk1.img
    之后,disk1.img就是备份好的磁盘映像文件,你可以复制或转移到其他介质也可以压缩一下:
    gzip disk1.img #generates disk1.img.gz
    或者在创建磁盘映像文件的同时就执行压缩:
    dd if=/dev/sda | gzip > disk.img.gz
    dd if=/dev/sda | bzip2 > disk.img.bz2

    不错吧!ghost的功能都有了。

    2.分区克隆
    如果我们不想克隆整块磁盘,只想把某些存放数据的分区备份一下,你会需要克隆一个分区。正如预备知识所述,分区在linux下也是一个文件。例如
    dd if=/dev/sda1 of=~/part1.img
    将把第一块磁盘的第一个分区备份到名为part1.img的文件中。
    也可以进行分区复制:
    dd if=/dev/hda1 of=/dev/hda3
    将把分区一原样复制到分区3.

    3. 从镜像文件恢复磁盘或分区
    很简单,把上面命令中,of和if指向的文件名互换一下即可实现恢复。例如
    dd if=disk1.img of=/dev/sda
    把保存在disk1.img中的映像恢复到第一块磁盘
    dd if=part1.img of=/dev/hda2
    把保存在part1.img中的映像恢复到第一块硬盘的第二个分区

    最后,需要注意一点是,无论备份还是恢复,都需要保证 of 指向的文件或磁盘空间要大于 if 指向的内容,因为是按字节复制 如果没有足够的空间去存储内容,备份自然会失败。

    展开全文
  • linux下用dd命令拷贝硬盘

    千次阅读 2014-11-05 08:48:46
    但在x86上,硬盘动辄上G,安装一个发行版本的Linux,也得3GB~4GB,如果将这些数据“烧写”,的确不易,反正我是不知道用什么方法。 ghost方法我想过(但没试过),因此最终的设备没有鼠标、没有键盘,没有显示器,不...

    最近所做的项目涉及到系统的“烧写”,在ARM中,一般用flash,容量也不大,直接用erase操作即可。但在x86上,硬盘动辄上G,安装一个发行版本的Linux,也得3GB~4GB,如果将这些数据“烧写”,的确不易,反正我是不知道用什么方法。

    ghost方法我想过(但没试过),因此最终的设备没有鼠标、没有键盘,没有显示器,不能说给你个光盘,就可以安装系统。幸好,去网上搜索一番,得到一些有用的信息,原来,直接使用dd命令就可以完成。当拷贝完硬盘后,就可以拿这个硬盘放到其它设备上跑了。也就是完成了“烧写”了。

    实际操作中,最好使用另一个系统启动,如另一个硬盘的系统,或者用live cd。当然,拷贝当前运行中的系统也是可以的,但不知当前的这个系统还有哪些不确定东西,所以还是不建议。

    用fdisk -l查看当前所有分区信息(记得用root,否则执行了啥也看不到),如:

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     1002047      500000   83  Linux
    /dev/sdb2         1002048    12002047     5500000   83  Linux
    /dev/sdb3        12002048    13002047      500000   83  Linux
    /dev/sdb4        13002048    15002047     1000000   83  Linux

    上面是我为了方便写文档而做的分区,可以看到Blocks十分工整,那是故意而为之的。

    全盘拷贝的命令:

    dd if=/dev/sdb  of=/dev/sdc

    分区拷贝:

    dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sdb of=name.img

    以上为例:

    dd bs=512 count=15002048 if=/dev/sdb of=ghost_linux_latelee.img

    由于ghost_linux_latelee.img会很大,可以在拷贝时将其压缩:

    dd bs=512 count=15002048 if=/dev/sdb | gzip -9 > ghost_linux_latelee.img.gz

    上面所做的,就是传说的系统“备份”,或叫“系统克隆”。

    对应的,有系统恢复的操作。命令如下:

    dd if=ghost_linux_latelee.img of=/dev/sda

    如果是压缩包,则命令为:

    gzip -c -d ghost_linux_latelee.img.gz | dd of=/dev/sda


    在上面的拷贝过程中,并不知道拷贝了多少,只有最终结束时才显示出时间、拷贝速度。为了查看进度,可以在另一个终端输入(记得用root):

    watch -n 5 killall -USR1 dd

    (注:killall并不是传说中把进程kill掉,而是发送一个指定的信号到指定的进程)

    之后,就能执行dd的终端看到进度了,如:

    58299+0 records in
    58298+0 records out
    29848576 bytes (30 MB) copied, 4.67728 s, 6.4 MB/s
    161403+0 records in
    161402+0 records out
    82637824 bytes (83 MB) copied, 9.69359 s, 8.5 MB/s
    238651+0 records in
    238650+0 records out
    122188800 bytes (122 MB) copied, 14.7105 s, 8.3 MB/s


    备注:

    用dd的方式,得到的镜像文件十分庞大——取决于所要做的系统的大小。比如,拷贝4GB的分区,真的就是拷贝4GB,即使是用gzip压缩,也压缩不了多少,文件依然很大。

    另外dd的方式也消除了我之前的担心,因为现在的Linux发行版的分区使用硬盘uuid作为标识,而不是/dev/sda1这种格式,据说uuid更好。但用dd拷贝,竟然连硬盘的uuid也一一拷贝,毫无变化,这的确让我吃惊。不过,目前看没什么时间研究dd了。

    李迟,发表于2014年11月04日晚上

    
    
    展开全文
  • linux下用dd命令拷贝硬盘 作者:李迟 发布:2014-11-04 20:02 分类:GNU/Linux系统 标签:dd命令, Linux备份, 拷贝硬盘 阅读:6,382 次 无评论 最近所做的项目涉及到系统的“烧写”,在ARM中,一般用flash,...
    
    

    最近所做的项目涉及到系统的“烧写”,在ARM中,一般用flash,容量也不大,直接用erase操作即可。但在x86上,硬盘动辄上G,安装一个发行版本的Linux,也得3GB~4GB,如果将这些数据“烧写”,的确不易,反正我是不知道用什么方法。

    ghost方法我想过(但没试过),因此最终的设备没有鼠标、没有键盘,没有显示器,不能说给你个光盘,就可以安装系统。幸好,去网上搜索一番,得到一些有用的信息,原来,直接使用dd命令就可以完成。当拷贝完硬盘后,就可以拿这个硬盘放到其它设备上跑了。也就是完成了“烧写”了。

    实际操作中,最好使用另一个系统启动,如另一个硬盘的系统,或者用live cd。当然,拷贝当前运行中的系统也是可以的,但不知当前的这个系统还有哪些不确定东西,所以还是不建议。

    用fdisk -l查看当前所有分区信息(记得用root,否则执行了啥也看不到),如:

    Device Boot      Start         End      Blocks   Id  System /dev/sdb1            2048     1002047      500000   83  Linux /dev/sdb2         1002048    12002047     5500000   83  Linux /dev/sdb3        12002048    13002047      500000   83  Linux /dev/sdb4        13002048    15002047     1000000   83  Linux

    上面是我为了方便写文档而做的分区,可以看到Blocks十分工整,那是故意而为之的。

    全盘拷贝的命令:

    dd if=/dev/sdb  of=/dev/sdc

    分区拷贝:

    dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sdb of=name.img

    以上为例:

    dd bs=512 count=15002048 if=/dev/sdb of=ghost_linux_latelee.img

    由于ghost_linux_latelee.img会很大,可以在拷贝时将其压缩:

    dd bs=512 count=15002048 if=/dev/sdb | gzip -9 > ghost_linux_latelee.img.gz

    上面所做的,就是传说的系统“备份”,或叫“系统克隆”。

    对应的,有系统恢复的操作。命令如下:

    dd if=ghost_linux_latelee.img of=/dev/sda

    如果是压缩包,则命令为:

    gzip -c -d ghost_linux_latelee.img.gz | dd of=/dev/sda

    在上面的拷贝过程中,并不知道拷贝了多少,只有最终结束时才显示出时间、拷贝速度。为了查看进度,可以在另一个终端输入(记得用root):

    watch -n 5 killall -USR1 dd

    (注:killall并不是传说中把进程kill掉,而是发送一个指定的信号到指定的进程)

    之后,就能执行dd的终端看到进度了,如:

    58299+0 records in 58298+0 records out 29848576 bytes (30 MB) copied, 4.67728 s, 6.4 MB/s 161403+0 records in 161402+0 records out 82637824 bytes (83 MB) copied, 9.69359 s, 8.5 MB/s 238651+0 records in 238650+0 records out 122188800 bytes (122 MB) copied, 14.7105 s, 8.3 MB/s

    备注:

    用dd的方式,得到的镜像文件十分庞大——取决于所要做的系统的大小。比如,拷贝4GB的分区,真的就是拷贝4GB,即使是用gzip压缩,也压缩不了多少,文件依然很大。

    另外dd的方式也消除了我之前的担心,因为现在的Linux发行版的分区使用硬盘uuid作为标识,而不是/dev/sda1这种格式,据说uuid更好。但用dd拷贝,竟然连硬盘的uuid也一一拷贝,毫无变化,这的确让我吃惊。不过,目前看没什么时间研究dd了。

    PS:使用dd命令,可以读取硬盘的mbr扇区,示例如下:

    dd if=/dev/sdb of=mbr.bin bs=512 count=1
    
    
    展开全文
  • Linux dd 硬盘克隆(硬盘拷贝)

    千次阅读 2014-05-13 20:36:26
    只拷贝前120GB ...sudo dd if=/dev/sdb of=/dev/sdc conv=notrunc bs=128MB count=938 sudo dd if=/dev/sdb of=/dev/sdc conv=notrunc bs=64MB count=1875 count为bs的次数 一个盘到多个盘的拷贝:
  • 硬盘dd复制linux系统

    2015-12-22 10:00:04
    要从服务器A上拷贝系统到服务器B ...执行命令:dd dd if=/dev/sda of=/dec/sdc 1T的大小,拷贝了将近6个小时,有点慢,可能东西有点多。 把硬盘sdc拔下插回服务器B中。 登录,修改/etc/hosts , /etc/host
  • Linux使用dd命令测试硬盘读写速度

    万次阅读 2013-09-25 16:01:35
    所以我们需要测试硬盘的读写速度,测试的方法很多,下面是使用Linux 自带的dd命令测试硬盘的读写速度。   time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of...
  • 现有linux系统,由硬盘sda运行,想将其整体拷贝至硬盘sdb,并由sdb启动系统,如何做? 两种方案,第一种方案tar命令压缩拷贝;第二种方案,linux dd命令直接拷贝。 1、第一种方案,tar压缩备份恢复 tar压缩备份后...
  • 可以用parted magic光盘来实现 1.用parted magic对调整源盘的分区大小以适应...3.重建目标盘的grub引导:用linux安装盘引导,进入linux rescue方式,注意加载硬盘,#grub,grub&gt;root (hd0,0),setup(hd0) ...
  • Linux复制整个硬盘

    千次阅读 2013-10-23 23:37:11
    连接好新硬盘,开机,进入系统(废话!) fdisk -l ; 由于我两块硬盘都是Sata的,所以fdisk -l出来的结果是sda(旧) sdb(新) dd if=/dev/sda of=/dev/...dd的方式有点类似于ghost的全盘复制,速度较慢,但不会出现
  • LINUX如何克隆硬盘

    2020-03-12 14:52:54
    Linux有四个你应该考虑的磁盘克隆解决方案: dd Partimage Partclone Clonezilla 今天讲讲dd的用法,之所以先说dd因为简单易用而且兼容性好,首选。 使用dd dd是一个简单,多功能,强大的工具。可以用来把数据...
  • linux环境下的硬盘批量复制

    千次阅读 2013-10-11 14:31:18
     硬盘的复制有两种形式,一个是使用硬盘复制机(也称硬盘拷贝机),普通1拖5的硬盘复制机价格大概在2万元左右,对于微小创业公司而言是一笔不小的数目。另一种就是通过软件的方式,在windows平台下这种类型的软件...
  • 如何克隆LINUX硬盘:4种方法

    千次阅读 2019-05-11 07:53:04
    仅仅因为你运行Linux操作系统并不意味着你不会不时遇到问题。有一个备份计划总是好的,以防万一出现问题。也许一种罕见的Linux病毒会攻击; 也许你会成为勒索软件诈骗者的目标。也许硬盘驱动器(HDD)会失败。 通过...
  • dd命令备份Linux系统

    2019-01-25 11:42:26
    数据丢失带来的损失是相当昂贵的... dd是一个功能强大的UNIX工具,由Linux内核的makefile进行引导映像,它也可以用来复制数据。 例 1:备份整个硬盘 使用dd命令备份整个硬盘。在这个例子中,源硬盘的设备名为/ dev/...
  • 这里我们使用dd命令来测试硬盘的读写速度 dd - convert and copy a file 【基本操作】 dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来...
1 2 3 4 5 ... 20
收藏数 18,464
精华内容 7,385
热门标签
关键字:

dd硬盘复制 linux