首頁 > linux教程 > Linux數據備份與恢復 閱讀:0更新時間:2020-03-28 01:07:53

Linux restore命令:還原dump操作備份下的文件、目錄或分區

restore 命令是 dump 命令的配套命令,dump 命令是用來備份分區和數據的,而 restore 命令是用來恢復數據的。

restore 命令的基本格式如下:

[root@localhost ~]# restore [模式選項] [-f]

此命令中,-f 選項用于指定備份文件的文件名;restore 命令常用的模式有以下 4 種,這 4 種模式不能混用:
  • -C:比較備份數據和實際數據的變化。如果實際數據中的現有數據發生了變化,那么這個選項能夠檢測到這個變化。但是如果實際數據中新增了數據,那么這個選項是不能檢測到變化的。舉個例子:別人給我了 100 萬元投資(實際數據),但是他有一個投資的賬本(備份數據),他要時不時地比對賬本和實際的 100 萬元投資,如果 100 萬元減少則馬上就能發現改變;但是如果投資增加,則不會報警;
  • -i:進入交互模式,手工選擇需要恢復的文件;
  • -t:查看模式,用于查看備份文件中擁有哪些數據;
  • -r:還原模式,用于數據還原;

【例 1】比較備份數據和實際數據的變化。
這里大家需要注意,數據比較只有在原有數據減少或發生變化時才能檢測到變化,而新增的數據是不會被檢測到的。命令如下:

[root@localhost ~]# touch /boot/abc
#在/boot/目錄中新建abc文件
[root@localhost ~]# restore -C -f /root/boot.bak.bz2
Dump tape is compressed.
Dump date:Wed Jun 5 08:20:02 2013
Dumped from:the epoch
Level 0 dump of /boot on localhost:/dev/sda1
Label:none
filesys = /boot
#restore檢測,沒有發現任何變化(當然,因為備份數據在備份時沒有abc文件,所以restore命令是不能識別新建文件的)
[root@localhost ~]# mv /boot/vmlinuz-2.6.32-279.el6.i686 /boot/vmlinuz-2.6.32-279.el6.i686.bak
#把/boot/目錄中的內核鏡像文件改一個名字
[root@localhost ~]# restore -C -f /root/boot.bak.bz2
Dump tape is compressed.
Dump date:Wed Jun 5 08:20:02 2013
Dumped from:the epoch
Level 0 dump of /boot on localhost:/dev/sda1
Label:none
filesys = /boot
restore:unable to stat ./vmlinuz-2.6.32-279.el6.i686:No such file or directory Some files were modified! 1 compare errors
#restore發現內核鏡像文件丟失

這個實驗比較危險,一定要記得把內核鏡像文件的名字改回來,否則一旦重啟,系統就會無法正常啟動。

[root@localhost ~]# mv /boot/vmlinuz-2.6.32-279.el6.i686.bak /boot/vmlinuz2.6.32-279.el6.i686


【例 2】查看模式。
這種模式比較簡單,就是查看備份文件中到底包含什么內容。命令如下:

[root@localhost ~]# restore -t -f boot.bak.bz2
Dump tape is compressed.
#備份數據是壓縮的
Dump date:Wed Jun 5 08:20:02 2013
#數據備份時間
Dumped from:the epoch
Level 0 dump of /boot on localhost:/dev/sda1
#備份等級
Label:none
#分區的卷標,沒有設定卷標
2.
11 ./lost+found
12 ./grub
24 ./grub/grub.conf
13 ./grub/splash.xpm.gz
…省略部分輸出…


【例 3】還原模式
restore 命令的還原模式既可以用于還原整個分區,也可以用于還原文件或目錄。命令格式是一樣的,不過要注意,如果要還原增量備份的數據,則一定要先還原完全備份的數據。命令如下:

#還原boot.bak.bz2分區備份
#先還原完全備份的數據
[root@localhost ~]# mkdir boot.test
#建立準備解壓縮的目錄。當然,如果這個目錄是我新建的分區,就可以直接把數據恢復到分區中
[root@localhost ~]# cd boot.test/
#進入解壓縮目錄
[root@localhost boot.test]# restore -r -f /root/boot.bak.bz2
Dump tape is compressed.
#備份數據是壓縮數據
#解壓縮
[root@localhost boot.test]#ll
#查看一下解壓縮的文件
總用量21300
-rw-r--r--. 1 root root 106611 6月 22 2012 config-2.6.32-279.el6.i686 drwxr-xr-x. 3 root root 4096 4 月 10 21:47 efi drwxr-xr-x. 2 root root 4096 4 月 10 21:49 grub
-rw-r--r--. 1 root root 14708399 4 月 10 21:49 initrara£s-2.6.32-279.el6.i686.img
drwx------. 2 root root 4096 4 月 10 21:44 lost+found
-rw-------. 1 root root 47504 6 月 5 09:44 restoresymtable
-rw-r--r--. 1 root root 175903 6 月 22 2012 symvers-2.6.32-279.el6.i686.gz
-rw-r--r--. 1 root root 1846041 6 月 22 2012 System.map-2.6.32-279.el6.i686
-rw-r--r--. 1 root root 1048576 6 月 5 02:38 test
-rwxr-xr-x. 1 root root 3856608 6 月 22 2012 vmlinuz-2.6.32-279.el6.i686
#再還原增量備份的數據
[root@localhost boot.test]# restore -r -f /root/boot.bakl.bz2
Dump tape is compressed.
#恢復增量備份的數據
[root@localhost boot.test]# ll
總用量21328
-rw-r--r--. 1 root root 106611 6 月 22 2012 config-2.6.32-279.el6.i686
drwxr-xr-x. 3 root root 4096 4 月 10 21:47 efi
drwxr-xr-x. 2 root root 4096 4 月 10 21:49 grub
-rw-r--r--. 1 root root 14708399 4 月 10 21:49 initramfs-2.6.32-279.eX6.i686.img
-rw-r--r--. 1 root root 24772 6 月 5 08:20 install. log
#增量備份的install.log文件被恢復了
drwx------. 2 root root 4096 4 月 10 21:44 lost+found
-rw-------. 1 root root 47552 6 月 5 09:57 restoresymtable
-rw-r--r--. 1 root root 175903 6 月 22 2012 symvers-2.6.32-279.el6.i686.gz
-rw-r--r--. 1 root root 1846041 6 月 22 2012 System.map-2.6.32-279.el6.i686
-rw-r--r--. 1 root root 1048576 6 月 5 02:38 test
-rwxr-xr-x. 1 root root 3856608 6月  22 2012 vmlinuz-2.6.32-279.el6.i686

我們再來還原/etc/目錄的備份etc.dump.bz2,其實還原的方法是完全一樣的。命令如下:

[root@localhost ~]# restore -r -f etc.dump.bz2
Dump tape is compressed.
#還原etc.dump.bz2備份
[root@localhost ~]# ll -d /root/etc
drwxr-xr-x.103 root root 12288 6月 5 07:45 /root/etc
#在root下生成了etc目錄,里面的數據和/etc/目錄中的數據完全一致

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩