• dd备份和恢复 枯木


    linux/unix  dd命令是一个非常好的管理磁盘命令

    dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用


    dd指令选项详解

    if=file     -->    输入文件名,缺省为标准输入

    of=file     -->    输出文件名,缺省为标准输出

    ibs=bytes     -->    一次读入bytes个字节(即一个块大小为 bytes 个字节)

    obs=bytes     -->    一次写bytes个字节(即一个块大小为 bytes 个字节)

    bs=bytes    -->    同时设置读写块的大小为 bytes,可代替 ibs 和obs

    cbs=bytes    -->    一次转换bytes个字节,即转换缓冲区大小

    skip=blocks    -->    从输入文件开头跳过 blocks个块后再开始复制

    seek=blocks    -->    从输出文件开头跳过 blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

    count=blocks    -->    仅拷贝blocks个块,块大小等于 ibs 指定的字节数

    conv=conversion[,conversion...]    -->    用指定的参数转换文件

    ascii    -->    转换EBCDIC为 ASCII

    ebcdic    -->    转换ASCII为 EBCDIC

    ibm    -->    转换ASCII为 alternate EBCDIC

    block    -->    把每一行转换为长度为 cbs的记录,不足部分用空格填充

    unblock    -->    使每一行的长度都为 cbs,不足部分用空格填充

    lcase    -->    把大写字符转换为小写字符

    ucase    -->    把小写字符转换为大写字符

    swab    -->    交换输入的每对字节

    noerror    -->    出错时不停止

    notrunc    -->    不截短输出文件

    sync    -->    把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

    注意:指定数字的地方若以下列字符结尾乘以相应的数字:b=512,c=1, k=1024, w=2, xm=number m,kB=1000,K=1024,MB=1000*1000,M=1024*1024,GB=1000*1000*1000,G=1024*1024*1024

     =================================================================================================

    创建基于文件的sswap分区:

    a. dd if=/dev/zero of=/project/swapfile bs=1024 count=500000    => 通过zero文件生成一个5G的文件

    b. mkswap /project/swapfile     =>    makes file usable for swapping生成swap分区文件

    c. swapon /project/swapfile      =>    enables swapping,使swap分区生效

    d. swapoff/project/swapfile      =>    关闭指定的swap分区

    e. swapoff -a                            =>    disables all swapping for entries listed in: /etc/fstab关闭所有fstab中的swap分区

    =================================================================================================


    备份:

    [root@server ~]# dd if=/dev/sda of=/dev/sdb   =>    备份整个磁盘到另外一个磁盘

    [root@server ~]# dd if=/dev/sdb of=sda.bak     =>    备份整个磁盘为某个文件

    [root@server ~]# dd if=/dev/sda | gzip > sda.bak.gz    =>    备份并且压缩

    [root@server ~]# dd if=/dev/sdaof=dbt.bak count=1 bs=512 skip=446

    =>     跳过前446字节备份磁盘第一扇区的后66字节DPT信息到指定文件


     =================================================================================================

    恢复:

    [root@server ~]# dd if=/dev/sdb of=/dev/sda

    [root@server ~]# gzip -dc sda.bak.gz | dd of=/dev/sda

    [root@server ~]# dd if=/path/to/image of=/dev/hdx count=1 bs=512 seek=446
    =>
        将备份DPT信息写到MBR后面的66字节

    ================================================================================================= 


    销毁数据:

    [root@server ~]# dd if=/dev/urandom of=/dev/sda1    =>    利用随机数填充硬盘数据,达到销毁数据的作用

     

    通过比较dd指令输出中所显示的命令执行时间(选时间最少的那个),即可确定系统最佳的block size大小

    注意其中磁盘要以 -o sync的选项挂载,否则会导致数据写入到缓存中,而非写入磁盘上去,导致测试不准确
    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

     

    测试读写速度

     注意:其中磁盘要以 -o sync的选项挂载,否则会导致数据写入到缓存中,而非写入磁盘上去,导致测试不准确
    [root@server ~]# mount -o sync,remount / 

    [root@server ~]# mount | grep sync

    /dev/sda2 on / type ext4 (rw,sync)

    [root@server ~]# dd if=/dev/zero of=/tmp/test.dd bs=4096 count=5000 => 测试写入速度

    [root@server ~]# dd if=/tmp/test.dd of=/dev/null bs=4096 count=5000=> 读取测试

    =================================================================================================


  • 相关阅读:
    angular学习笔记(二十五)-$http(3)-转换请求和响应格式
    angular学习笔记(二十四)-$http(2)-设置http请求头
    angular学习笔记(二十三)-$http(1)-api
    Replace 在动态sql中的实现
    SQL 中 replace 替换字符串中的字符 ''
    sqlserver 时间字符串转化为时间格式
    update set where exists 多表更新 在mssql、MySQL、Oracle中分别用法
    LPAD在Oracle中和 mssql以及在MySQL中的不同用法 以及调用存储过程方法
    支付宝对账单下载Java正式商户调用
    支付宝对账单下载Java沙箱调用
  • 原文地址:https://www.cnblogs.com/kumulinux/p/2808750.html
Copyright © 2020-2023  润新知