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 您更想做哪個方向的工作?

獲取測試結果
 
課程資料、活動優惠 領取通道
 
 
五月天黄色网站