赞
踩
[root@CncLucZK ~]# yum -y install 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 #备份文件生成了
[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 级别进行备份。
[root@CncLucZK ~]# dump -0j -f /test/etc.dump.bz2 /etc #完全备份/etc/目录,打印的日志信息和备份分区信息一样 DUMP: Date of this level 0 dump: Thu Oct 27 18:58:55 2022 DUMP: Dumping /dev/vda1 (/ (dir etc)) to /test/etc.dump.bz2 DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: 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 2022 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Closing /test/etc.dump.bz2 DUMP: Volume 1 completed at: Thu Oct 27 18:59:02 2022 DUMP: Volume 1 took 0:00:07 DUMP: Volume 1 transfer rate: 943 kB/s DUMP: Volume 1 27150kB uncompressed, 6605kB compressed, 4.111:1 DUMP: 27150 blocks (26.51MB) on 1 volume(s) DUMP: finished in 7 seconds, throughput 3878 kBytes/sec DUMP: Date of this level 0 dump: Thu Oct 27 18:58:55 2022 DUMP: Date this dump completed: Thu Oct 27 18:59:02 2022 DUMP: Average transfer rate: 943 kB/s DUMP: Wrote 27150kB uncompressed, 6605kB compressed, 4.111:1 DUMP: 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 subdirectory DUMP: The ENTIRE dump is aborted. #备份失败了,文件、目录备份只能使用0级别
[root@localhost ~]# restore [模式选项] [-f]
此命令中,-f 选项用于指定备份文件的文件名;restore 命令常用的模式有以下 4 种,这 4 种模式不能混用:
比较备份数据和实际数据的变化:数据比较只有在原有数据减少或发生变化时才能检测到变化,而新增的数据是不会被检测到的
[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 ./etc 276805 ./etc/mtab 263440 ./etc/fonts 263441 ./etc/fonts/conf.d 279278 ./etc/fonts/conf.d/65-fonts-persian.conf 279274 ./etc/fonts/conf.d/50-user.conf ....
#先还原完全备份的数据
[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
#恢复增量备份的数据
[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
[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"
[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
#然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
#制作光盘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镜像是可以被当作真正的光盘使用的
[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
参考文献:
Linux dd命令详解:数据备份,并在备份过程中进行格式转换
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。