13.5 dump命令用法详解:备份分区、文件或目录

  • dump 命令使用“备份级别”来实现增量备份,它支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别。 CentOS 系统默认是没有安装此命令的,需要手动安装 dump 命令,安装命令如下:
[root@CncLucZK ~]# yum -y install dump
  • 当dump 命令备份一份数据时,第一次备份应该使用 0 级别,会把所有数据完全备份一次;第二次备份就可以使用 1 级别了,它会和 0 级别进行比较,把 0 级别备份之后变化的数据进行备份,以此类推。但只有在备份整个分区或整块硬盘时,才能支持 1~9 的增量备份级别;如果只是备份某个文件或不是分区的目录,则只能使用 0 级别进行完全备份。dump 命令的基本格式如下:
[root@localhost ~]# dump [选项] 备份之后的文件名 原文件或目录
  • 选项:dump 命令是一个较为复杂的命令,如果我们只是想要实现数据的备份与恢复,那么掌握下面几个选项就足够了。
    -level:就是我们说的 0~9 共 10 个备份级别;
    -f 文件名:指定备份之后的文件名;
    -u:备份成功之后,把备份时间、备份级别以及实施备份的文件系统等信息,都记录在 /etc/dumpdates 文件中;
    -v:显示备份过程中更多的输出信息;
    -j:调用 bzlib 库压缩备份文件,其实就是把备份文件压缩为 .bz2 格式,默认压缩等级是 2;
    -W:显示允许被 dump 的分区的备份等级及备份时间;

  • 备份分区:必须先使用 0 级别完全备份分区,然后使用1,2…等增量备份分区

[root@CncLucZK ~]# df -h
文件系统  容量 已用 可用 已用% 挂载点
/dev/sda3   20G 3.0G 16G 17% /
tmpfs   30 6M 0 30 6M 0% /dev/shm
/dev/sda1   194M 26M 158M 15% /boot
tmpfs           183M     0  183M   0% /run/user/0#系统中只分了/分区和/boot分区。根分区太大,备份速度太慢,我们还是备份/boot分区吧
[root@CncLucZK ~]# dump -0uj -f /test/boot.bak.bz2 /boot/
#备份命令。先执行一次完全备份,并压缩和更新备份时间
DUMP: Date of this level 0 dump: Wed Jun 5 03:08:22 2013
#备份的级别和时间
DUMP: Dumping /dev/sdal (/boot) to /test/boot.bak.bz2
#备份源和目标
DUMP: Label: none
#分区没有卷标
DUMP: Writing 10 Kilobyte records
DUMP: Compressing output at compression level 2 (bzlib)
#备份时压缩
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 21846 blocks.
DUMP: Volume 1 started with block 1 at: Wed Jun 5 03:08:22 2013
DUMP: dumping (Pass III) [directories]
#开始dump 备份
DUMP: dumping (Pass XV) [regular files]
DUMP: Closing /test/boot.bak.bz2
#备份结朿,生成备份文件
DUMP: Volume 1 completed at: Wed Jun 5 03:08:30 2013
DUMP: Volume 1 took 0:00:08
DUMP: Volume 1 transfer rate: 2370 kB/s
DUMP: Volume 1 21930kB uncompressed, 18962kB compressed, 1.157:1
#数据容量
DUMP: 2X930 blocks (21.42MB) on 1 volume(s)
DUMP: finished in 7 seconds, throughput 3132 kBytes/sec
DUMP: Date of this level 0 dump: Wed Jun 5 03:08:22 2013
DUMP: Date this dump completed: Wed Jun 5 03:08:30 2013
DUMP: Average transfer rate: 2370 kB/s
DUMP: Wrote 21930kB uncompressed, 18962kB compressed, 1.157:1
[root@CncLucZK ~]# cat /etc/dumpdates
#查看备份时间文件
/dev/sdal 0 Wed Jun 5 03:08:22 2013 +0800
#备份的分区 备份级别 备份曰期
[root@CncLucZK ~]# 11 -h /test/boot.bak.bz2
-rw-r--r--. 1 root root 19M 6 月 5 03:08 /test/boot.bak.bz2
#备份文件生成了
  • /boot 分区的内容发生了变化,则可以使用 1 级别进行增量备份。当然,如果数据会继续发生变化,则可以继续使用 2~9 级别增量备份。命令如下:
[root@CncLucZK ~]# dump -1uj -f /root/boot.bak1.bz2 /boot/
#增量备份/boot分区,并压缩
[root@localhost ~]# ll -h boot.bak*
-rw-r--r--.1 root root 18K 6月 5 03:16 boot.bak1.bz2
-rw-r--r--.1 root root 19M 6月 5 03:08 boot.bak.bz2
#boot.bak1.bz2压缩文件只有18KB,证明增量备份只备份了0级别以后变化的数据
  • 如果备份的是整个分区,那么是可以使用dump -W命令来从 /etc/dumpdates查询分区的备份时间及备份级别的。不过要注意,如果备份时没有使用-u选项,那么“dump -W”命令是不会记录备份的时间和级别的。命令如下:
[root@CncLucZK ~]# dump -W

dump命令可以非常方便地实现增量备份,也可以实现差异备份,先使用 0 级别完全备份一次,以后的每次备份都使用 1 级别进行备份。

  • 备份文件目录:dump 命令也可以文件或目录,不过,只要不是备份分区,就只能使用 0 级别进行完全备份,而不再支持增量备份。同时,不能使用“-u”选项更新分区的备份时间,当然也不能使用“dump -W”命令查询到文件或目录的备份。/etc/ 目录是重要的配置文件目录,可以备份这个目录来看看吧。命令如下:
[root@CncLucZK ~]# dump -0j -f /test/etc.dump.bz2 /etc              #完全备份/etc/目录,打印的日志信息和备份分区信息一样DUMP: Date of this level 0 dump: Thu Oct 27 18:58:55 2022DUMP: Dumping /dev/vda1 (/ (dir etc)) to /test/etc.dump.bz2DUMP: Label: noneDUMP: Writing 10 Kilobyte recordsDUMP: Compressing output at transformation level 2 (bzlib)DUMP: mapping (Pass I) [regular files]DUMP: mapping (Pass II) [directories]DUMP: estimated 25876 blocks.DUMP: Volume 1 started with block 1 at: Thu Oct 27 18:58:55 2022DUMP: dumping (Pass III) [directories]DUMP: dumping (Pass IV) [regular files]DUMP: Closing /test/etc.dump.bz2DUMP: Volume 1 completed at: Thu Oct 27 18:59:02 2022DUMP: Volume 1 took 0:00:07DUMP: Volume 1 transfer rate: 943 kB/sDUMP: Volume 1 27150kB uncompressed, 6605kB compressed, 4.111:1DUMP: 27150 blocks (26.51MB) on 1 volume(s)DUMP: finished in 7 seconds, throughput 3878 kBytes/secDUMP: Date of this level 0 dump: Thu Oct 27 18:58:55 2022DUMP: Date this dump completed:  Thu Oct 27 18:59:02 2022DUMP: Average transfer rate: 943 kB/sDUMP: Wrote 27150kB uncompressed, 6605kB compressed, 4.111:1DUMP: DUMP IS DONE
[root@CncLucZK ~]# ll -dh /test/etc.dump.*                                 #查看备份文件
-rw-r--r-- 1 root root 6.5M Oct 27 18:59 /test/etc.dump.bz2[root@CncLucZK ~]# dump -1j -f /test/etc.dump.bz2 /etc                      #查看是否能使用增量备份DUMP: Only level 0 dumps are allowed on a subdirectoryDUMP: The ENTIRE dump is aborted.                                         #备份失败了,文件、目录备份只能使用0级别

13.6 restore命令:还原dump操作备份下的文件、目录或分区

  • restore 命令是 dump 命令的配套命令,dump 命令是用来备份分区和数据的,而 restore 命令是用来恢复数据的。restore 命令的基本格式如下:
[root@localhost ~]# restore [模式选项] [-f]
  • 此命令中,-f 选项用于指定备份文件的文件名;restore 命令常用的模式有以下 4 种,这 4 种模式不能混用:

    • -C:比较备份数据和实际数据的变化。如果实际数据中的现有数据发生了变化(减少),那么这个选项能够检测到这个变化。但是如果实际数据中新增了数据,那么这个选项是不能检测到变化的。
    • -i:进入交互模式,手工选择需要恢复的文件;
    • -t:查看模式,用于查看备份文件中拥有哪些数据;
    • -r:还原模式,用于数据还原;
  • 比较备份数据和实际数据的变化:数据比较只有在原有数据减少或发生变化时才能检测到变化,而新增的数据是不会被检测到的

[root@CncLucZK ~]# touch /etc/aaa                           #对/etc目录新增aaa文件
[root@CncLucZK ~]# restore -C -f /test/etc.dump.bz2
Dump tape is compressed.
Dump   date: Thu Oct 27 18:58:55 2022
Dumped from: the epoch
Level 0 dump of / (dir etc) on CncLucZK:/dev/vda1
Label: none
filesys = /
./lost+found: (inode 11) not found on tape
./dev: (inode 262145) not found on tape
./proc: (inode 393217) not found on tape
./run: (inode 262146) not found on tape
...
Some files were modified!  120 compare errors
#比较备份数据和实际数据时,没有检测到新增的aaa文件
  • 查看模式:查看备份文件中到底包含什么内容。
[root@CncLucZK ~]# restore -t -f /test/etc.dump.bz2
#备份数据是压缩的
Dump tape is compressed.
#数据备份时间
Dump   date: Thu Oct 27 18:58:55 2022
Dumped from: the epoch
#备份等级
Level 0 dump of / (dir etc) on CncLucZK:/dev/vda1
#分区的卷标,没有设定卷标
Label: none         2   .262147 ./etc276805 ./etc/mtab263440    ./etc/fonts263441   ./etc/fonts/conf.d279278    ./etc/fonts/conf.d/65-fonts-persian.conf279274  ./etc/fonts/conf.d/50-user.conf
....
  • restore 命令的还原模式既可以用于还原整个分区,也可以用于还原文件或目录。命令格式是一样的,不过要注意,如果要还原增量备份的数据,则一定要先还原完全备份的数据。命令如下:
#先还原完全备份的数据
[root@CncLucZK ~]# mkdir /test/boot-restore
#建立准备解压缩的目录。当然,如果这个目录是新建的分区,就可以直接把数据恢复到分区中
[root@CncLucZK boot-restore]# cd /test/boot-restore
#进入解压缩目录
[root@localhost boot-restore]# restore -r -f /test/boot.bak.bz2
Dump tape is compressed.
#备份数据是压缩数据
#解压缩
#再还原增量备份的数据
[root@localhost boot-restore]# restore -r -f /test/boot.bak1.bz2
#恢复增量备份的数据
  • 还原/etc/目录的备份etc.dump.bz2,其实还原的方法是完全一样的。命令如下:
[root@CncLucZK user]# restore -r -f ../etc.dump.bz2
Dump tape is compressed.
./lost+found: (inode 11) not found on tape
./dev: (inode 262145) not found on tape
./proc: (inode 393217) not found on tape
...
#将etc.dump.bz2还原到文件原位置/etc

13.7 dd命令:数据备份,并在备份过程中进行格式转换

  • dd 命令主要用来进行数据备份,并且可以在备份的过程中进行格式转换。其实 dd 命令可以把源数据复制成目标数据,而且不管源数据是文件、分区、磁盘还是光盘,都可以进行数据备份。dd 命令的基本格式如下:
[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"
  • 参数:

    1. if:定义输入数据的文件,也可以是输入设备;
    2. of:定义输出数据的文件,也可以是输出设备;
    3. bs:指定数据块的大小,也就是定义一次性读取或写入多少字节。模式数据块大小是 512 字节;
    4. count:指定 bs 的数量;
    5. conv=标志:依据标志转换文件。标志有以下这些:
      • ascii:由 EBCDIC 码转换至 ASCII 码;
      • ebcdic:由 ASCII 码转换至 EBCDIC 码;
      • ibm:由 ASCII 码转换至替换的 EBCDIC 码;
      • block:将结束字符块里的换行替换成等长的空格;
      • unblock:将 cbs 大小的块中尾部的空格替换为一个换行符;
      • lcase:将大写字符转换为小写;
      • notrunc:不截断输出文件;
      • ucase:将小写字符转换为大写;
      • swab:交换每一对输入数据字节;
      • noerror:读取数据发生错误后仍然继续;
      • sync:将每个输入数据块以 NUL 字符填满至 ibs 的大小;当配合 block 或 unblock 时,会以空格代替 NUL 字符填充;
  • 备份文件:
[root@CncLucZK test]# dd if=top.log of=top.bal        #如果要备份文件,那么dd命令和cp命令非常类似
16+1 records in
#数据占了写满的16个数据块,以及1个没有写满的数据块
16+1 records out
#记录了67+1 的写出
#默认数据块大小是512字节
8653 bytes (8.7 kB, 8.5 KiB) copied, 0.018402 s, 470 kB/s
#8653字节(8 kB)已复制,0.018402 秒,470 kB/秒
[root@CncLucZK test]# ll -d user*                  #查看一下生成的备份文件的大小
drwx--x--x 5 root root   4096 Oct 27 19:47 user
-rw-r--r-- 1 root root      0 Oct 27 20:00 user.bak
  • 备份分区为一个备份文件:
[root@CncLucZK test]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 20G 2.0G 17G 11% /
tmpfs 306M 0 306M 0% /dev/shm
/dev/sda1 194M 27M 157M 15% /boot
/dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom
#查看一下分区容量,我们备份/boot分区
[root@CncLucZK test]# dd if=/dev/sda1 of=/test/boot.bak
#备份完成
[root@CncLucZK test]# ll -h /tmp/boot.bak
-rw-r--r--.1 root root 200M 6月 5 18:14 /test/boot.bak
#查看生成的备份文件
#如果需要恢复,则执行以下命令
[root@CncLucZK test]# dd if=/test/boot.bak of=/dev/sda1
  • 如果想要把分区直接备份成另一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区大小一致或比它大。命令如下:
[root@CncLucZK ~]# dd if=/dev/sda1 of=/dev/sdb1
#如果需要恢复,则只需把输入项和输出项反过来即可,命令如下
[root@CncLucZK ~]# dd if=/dev/sdb1 of=/dev/sda1
  • 整盘备份
[root@CncLucZK ~]# dd if=/dev/sda of=/dev/sdb
#把磁盘a备份到磁盘b
[root@CncLucZK ~]# dd if=/dev/sda of=/tmp/disk.bak
#把磁盘a备份成文件disk.bak
#备份恢复
#如果要备份到另一块硬盘上,那么,当源硬盘数据损坏时,只需用备份硬盘替换源硬盘即可
#如果要备份成文件,那么在恢复时需要把备份数据复制到其他Linux中,然后把新硬盘安装到这台Linux
#服务器上,再把磁盘备份数据复制到新硬盘中。命令如下
[root@CncLucZK ~]# dd if=/tmp/disk.bak of=/dev/sdb
  • 复制软盘
[root@CncLucZK ~]# dd if=/dev/fd0 of=/tmp/fd.bak
#在Linux中软盘的设备文件名是/dev/fd0
#这条命令先把软盘中的数据保存为临时数据文件
[root@CncLucZK ~]# dd if=/tmp/fd.bak of=/dev/fd0
#然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
  • 如果需要备份的是光盘,那么在 Linux 中就是使用 dd 命令制作光盘的 ISO 镜像的。命令如下:
#制作光盘ISO镜像
[root@CncLucZK ~]# dd if=/dev/cdrom of=/tmp/cd.iso           #把光盘中所有的数据制作成ISO镜像
[root@CncLucZK ~J # mkdir /mnt/cd
#建立一个新的挂载点
[root@CncLucZK ~]# mount -o loop /tmp/cd.iso /mnt/cd       #挂载ISO文件到挂载点
[root@CncLucZK ~]# cd /mnt/cd
#进入挂载点
[root@CncLucZK cd]# ls
CentOS_BuildTag images RELEASE-NOTES-en-tJS.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL
EULA    isolinux repodata   RPM-GPG-KEY-CentOS-Security-6
GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
#数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的
  • 我们有时需要制作指定大小的文件,比如,在增加 swap 分区时,就需要建立指定大小的文件,这时也使用 dd 命令。命令如下:
[root@CncLucZK ~]# dd if=/dev/zero of=/tmp/testfile bs=1M count=10
#数据输入项是/dev/zero会向目标文件中不停地写入二进制的0
#指定数据块大小是1MB
#指定生成10个数据块。也就是定义输出的文件大小为10MB
记录了10+0 的读入
#显示数据占满了10个数据块
记录了10+0 的写出
#不过这里数据块的大小已经是1MB了
10485760字节(10 MB)已复制,0.00709902 秒,1.5 GB/秒
[root@CncLucZK ~]# ll -h /tmp/testfile
-rw-r--r--.1 root root 10M 6月 5 18:46 /tmp/testfile
#生成的testfile文件的大小刚好是10MB
  • dd 命令在进行整盘复制时,类似于 GHOST 工具的功能,不过通过 dd 命令复制出来的硬盘数据要比 GHOST 复制出来的硬盘数据稳定得多。虽然 dd 命令功能强大,不过也有一个明显的缺点,就是复制的时间较长,复制 100GB 的数据需要 15~25 分钟(根据服务器的性能不同而不同)。
  • 实现数据备份还有非常多的方法和工具,比如 tar 和 cpio 命令。至于网络复制工具,如 rsync 和 scp 等,需要较完善的网络知识才能够学习,这里不再介绍。

参考文献:
Linux dd命令详解:数据备份,并在备份过程中进行格式转换

下一篇:Linux学习-60-备份还原数据命令(date、tr命令)

Linux学习-59-备份还原数据命令(dump、restore、dd命令)相关推荐

  1. Linux备份还原数据( dump、restore)

    Linux系统本机数据备份(完整.增量备份)和还原( dump.restore) 文章目录 dump命令:备份分区或目录 一.dump命令 二.测试单一文件系统(分区)完整备份 三.测试单一文件系统( ...

  2. Linux学习 - 常用和不太常用的实用awk命令

    欢迎关注生信宝典:http://mp.weixin.qq.com/s/8wD14FXt7fLDo1BjJyT0ew Linux学习系列文章是生信宝典最开始主推的一块,力图从一个新额视角帮助初学者快速入 ...

  3. linux dd看不到安装盘,Linux dd 命令 command not found dd 命令详解 dd 命令未找到 dd 命令安装 - CommandNotFound ⚡️ 坑否...

    显示行号 | 选择喜欢的代码风格 默认 GitHub Dune LakeSide Plateau Vibrant Blue Eighties Tranquil dd 命令根据指定的操作复制文件,并转换 ...

  4. Linux centOS系统备份还原(dd+rsync方式)

    Linux系统备份对一些关键的单点业务是非常重要的,下面将说说采用简单的工具进行备份,实用派. 一.rsync备份系统 rsync -PpavAHX 备份源目录 备份到位置 rsync -PpavAH ...

  5. dd linux命令 分区,使用dd命令备份Linux分区

    为了备份分区,开始使用的是Remastersys,但最终生成的iso文件仅有几十K,应该是软件bug,且此软件不再更新,后尝试使用Linux Respin,但github一直连接不上. 其实可以尝试使 ...

  6. Linux服务器系统备份还原

    1.备份服务器上面的数据 利用tar指令对linux系统下面的文件打包成为一个压缩文件. tar -cvpzf backup.tgz --exclude=/proc --exclude=/lost+f ...

  7. linux 启动u盘备份,如何将G4L放入U盘启动计算机进入G4L来实现Linux系统的备份还原...

    启动G4L备份和还原Linux系统Ghost备份Windows操作系统的操作已经为人们所熟悉,您可以使用其各种版本来备份和还原各种Windows系统.但是备份Linux会遇到文件系统兼容性问题,那么是 ...

  8. linux学习(备份)

    修改日期时间 在命令行输入: Date:显示当前时间 Fri Aug 3 14:15:16 CST 2007 date –s:按字符串方式修改时间 可以只修改日期,不修改时间,输入: date -s ...

  9. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式

    一.ps 和 kill 命令 1.ps 命令 常用方式: ps aux :查看正在运行进程信息(主要查 pid). ps ajx :更加详细(PID. PPID:父进程 id. PGID:进程组 id ...

最新文章

  1. 【Linux/Ubuntu学习3】解决ubuntu解压windows生成的zip文件时乱码问题
  2. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
  3. HDU1257 最少拦截系统 贪心或动态规划
  4. 每天一道LeetCode-----以字符串的形式输出二叉树所有从根节点到叶子节点的路径
  5. [Bzoj4196] [NOI2015] 软件包管理器 [树链剖分,线段树]
  6. 使用Unoconv和LibreOffice进行格式转换实现在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件
  7. java异步刷新集合,同步和异步集合的性能测试,异步集合性能测试,package cn.o
  8. 假如你是架构师,你要做些什么
  9. 2.kafka 安装
  10. 如何从产品和技术角度上做一个好产品----软件公司如何开源节流(二)
  11. HTML表格实现固定表头 内容滚动
  12. html设置字体为方正小标宋,如何安装方正小标宋字体
  13. android 编辑txt,.txt到可修改的android数据库
  14. 数据中心机房搬迁施工技术方案
  15. POSTMAN中文版本
  16. iphone图片编辑画笔_iOS13图片编辑功能使用教程
  17. songshu-video-uniapp-YYC松鼠短视频前端源码-开源--优雅草科技官方发布
  18. Cisco Packet Tracer Student 两个路由器级联
  19. 详细分析 Vue3 文档
  20. python的__str__()方法和__unicode__()方法

热门文章

  1. React基础—PropTypes类型检查
  2. 小米潘多拉路由器添加节点_小白三步轻松搞定小米路由OpenWRT/PandoraBox过程·
  3. MTK平台手机重启问题分析
  4. Web精彩实战之“智能迷宫”
  5. VUE3+ElementPlus
  6. Tomcat调优和JVM优化
  7. 手撕一套sso(单点登录)系统之原理篇1
  8. 定期清除浏览器缓存 预防专偷网络账号的恶意软件
  9. 读《我把青春献给你》 By 冯小刚
  10. box-shadow:阴影效果和属性