400-650-7353

精品课程

您所在的位置:首页 > IT干货资料 > linux > 【Linux基础知识】CentOS7使用dd命令进行数据备份

【Linux基础知识】CentOS7使用dd命令进行数据备份

  • 来源:
  • 2021-08-30 16:11:53
  • 阅读()
  • 分享
  • 手机端入口

在Linux中可以使用dd命令进行数据备份。dd命令可以对文件(包括设备)的内容导入导出,导出数据后,原文件(或设备)的内容不会被删除或改变。用这种方式可实现任何文件(设备)到其他任何文件(设备)的数据导出,实现备份的目的。

格式如下:

dd if=源文件/设备 of=目标文件/设备 bs=每次操作的数据量 count=操作次数

其中的bs和count可以省略,省略后采用默认值。bs默认值是512字节,count默认值和源文件大小有关。

举例如下。

①dd if=f1 of=f2:把f1文件导入到f2中,相当于将文件f1复制为文件f2。相关操作如下:

[root@file01 ~]# cd /mnt
[root@file01 mnt]# cp /etc/sudoers ./f1
[root@file01 mnt]# ls
f1  hgfs
[root@file01 mnt]# dd if=f1 of=f2
记录了8+1 的读入
记录了8+1 的写出
4328字节(4.3 kB)已复制,0.000566382 秒,7.6 MB/秒
[root@file01 mnt]# ls -l
总用量 16
-r--r----- 1 root root 4328 8月   2 10:11 f1
-rw-r--r-- 1 root root 4328 8月   2 10:12 f2
drwxr-xr-x 2 root root    6 11月  6 2020 hgfs

②dd if=f1 of=f2 bs=1 count=3:把f1文件导入到f2中,每次导入1字节,导入3次。相关操作如下:

[root@file01 mnt]# dd if=f1 of=f2 bs=1 count=3
记录了3+0 的读入
记录了3+0 的写出
3字节(3 B)已复制,0.000652474 秒,4.6 kB/秒
[root@file01 mnt]# cat f2
## [root@file01 mnt]# 

③dd if=/dev/sda1 of=/mnt/f1:把sda1分区的数据导入到f1中,相当于用文件存储整个分区数据。相关操作如下:

[root@file01 mnt]# lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                     8:0    0   20G  0 disk
├─sda1                  8:1    0    1G  0 part /boot
└─sda2                  8:2    0   19G  0 part
  ├─centos_mini7-root 253:0    0   17G  0 lvm  /
  └─centos_mini7-swap 253:1    0    2G  0 lvm  [SWAP]
loop0                   7:0    0 32.6M  0 loop /media
[root@file01 mnt]# df -Th
文件系统                      类型      容量  已用  可用 已用% 挂载点
devtmpfs                      devtmpfs  475M     0  475M    0% /dev
tmpfs                         tmpfs     487M     0  487M    0% /dev/shm
tmpfs                         tmpfs     487M   14M  473M    3% /run
tmpfs                         tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_mini7-root xfs        17G  3.1G   14G   18% /
/dev/sda1                     xfs      1014M  229M  786M   23% /boot
tmpfs                         tmpfs      98M     0   98M    0% /run/user/0
/dev/loop0                    iso9660    33M   33M     0  100% /media
[root@file01 mnt]# dd if=/dev/sda1 of=/mnt/f1
记录了2097152+0 的读入
记录了2097152+0 的写出
1073741824字节(1.1 GB)已复制,8.7408 秒,123 MB/秒
[root@file01 mnt]# ls -lh f1
-r--r----- 1 root root 1.0G 8月   2 10:30 f1

④dd if=/dev/sda1 of=/dev/sdb1:把sda1分区的数据导入到sdb1中,相当于拷贝整个分区。

[root@file01 ~]# sfdisk -d /dev/sda|sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
 
Disk /dev/sdb: 2610 cylinders, 255 heads, 63 sectors/track
Old situation:
Units: cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
 
   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdb1   *      0+    130-    131-   1048576   83  Linux
/dev/sdb2        130+   2610-   2481-  19921920   8e  Linux LVM
/dev/sdb3          0       -       0          0    0  空
/dev/sdb4          0       -       0          0    0  空
New situation:
Units: sectors of 512 bytes, counting from 0
 
   Device Boot    Start       End   #sectors  Id  System
/dev/sdb1   *      2048   2099199    2097152  83  Linux
/dev/sdb2       2099200  41943039   39843840  8e  Linux LVM
/dev/sdb3             0         -          0   0  空
/dev/sdb4             0         -          0   0  空
Warning: partition 1 does not end at a cylinder boundary
Warning: partition 2 does not start at a cylinder boundary
Warning: partition 2 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
 
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@file01 ~]# dd if=/dev/sda1 of=/dev/sdb1
记录了2097152+0 的读入
记录了2097152+0 的写出
1073741824字节(1.1 GB)已复制,19.7337 秒,54.4 MB/秒

⑤dd if=/dev/sda of=/dev/sdb:把sda磁盘的数据导入到sdb磁盘中,相当于拷贝整个磁盘。相关操作如下:

[root@file01 ~]# dd if=/dev/sda of=/dev/sdb
记录了41943040+0 的读入
记录了41943040+0 的写出
21474836480字节(21 GB)已复制,394.098 秒,54.5 MB/秒

⑥dd if=/dev/zero of=/mnt/f1 bs=100M count=5:把空字符导入到f1中,每次导入100M字节,导入5次,相当于创建一个500M的全都是空字符的文件。相关操作如下:

[root@file01 mnt]# ls -l f1
-r--r----- 1 root root 1073741824 8月   2 10:30 f1
[root@file01 mnt]# dd if=/dev/zero of=/mnt/f1 bs=100M count=5
记录了5+0 的读入
记录了5+0 的写出
524288000字节(524 MB)已复制,0.877345 秒,598 MB/秒
[root@file01 mnt]# ls -l f1
-r--r----- 1 root root 524288000 8月   2 11:00 f1
[root@file01 mnt]# strings f1|more
[root@file01 mnt]# hexdump -C f1
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
1f400000

注意,/dev/zero并非是真正的设备或文件,类似于程序,功能是无限生成二进制的0,即空字符。

⑦dd if=/dev/zero of=/dev/sdb1 bs=100M count=1:把空字符导入到sdb2分区中,每次导入100M字节,导入1次,相当于擦除分区前100M空间,多用于分区无法格式化时,进行先擦除再格式化。此操作为危险操作,执行前确保分区/dev/sdb1中无重要数据。

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
 
课程资料、活动优惠 领取通道