鍍金池/ 教程/ Linux/ 文件備份|還原
Linux 學(xué)習(xí)記錄--開機(jī)掛載錯(cuò)誤
日志系統(tǒng)
數(shù)據(jù)流重定向
內(nèi)存交換空間的構(gòu)建
文件系統(tǒng)簡(jiǎn)介
Linux 學(xué)習(xí)記錄--軟件安裝 RPM|SRPM|YUM
文件特殊權(quán)限
目錄配置 FHS
文件內(nèi)容查閱
Boot Loader
文件壓縮
Linux 學(xué)習(xí)記錄--文件權(quán)限
Linux 命令縮寫
命令與文件的查詢
文件|目錄的默認(rèn)權(quán)限與隱藏權(quán)限
shell script
服務(wù)
Linux 學(xué)習(xí)記錄--程序編譯與函數(shù)庫(kù)
正則表達(dá)式與其應(yīng)用
關(guān)機(jī)相關(guān)指令
shell
vim 與 vi 常用命令
系統(tǒng)調(diào)用:進(jìn)程控制
文件系統(tǒng)簡(jiǎn)單操作
磁盤掛載與卸載
有名管道通訊
磁盤分區(qū),格式化與檢驗(yàn)
工作管理與進(jìn)程管理
匿名管道通訊
Linux 學(xué)習(xí)記錄--啟動(dòng)流程
文件與目錄管理
管道命令
命名別名與歷史命令
文件備份|還原
shell變量
Linux 學(xué)習(xí)記錄--ACL 權(quán)限控制
內(nèi)核|內(nèi)核模塊編譯
文件管理相關(guān)系統(tǒng)編程

文件備份|還原

dump 備份

restore 還原

dd 數(shù)據(jù)備份

mkisofs 鏡像文件制作

dump 備份

dump 主要用于備份真?zhèn)€文件系統(tǒng)備份,雖然也可以備份單一目錄,但是對(duì)目錄的支持不足,單一目錄還是建議使用打包壓縮的方式進(jìn)行備份
dump 另一個(gè)只要功能就是制定等級(jí),也就是可以進(jìn)行增量備份。

http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/images/5.gif" alt="" />

dump 等級(jí)分為0~9 10個(gè)等級(jí),0是完全備份,1是在0的基礎(chǔ)上進(jìn)行增量備份,依次類推
當(dāng)待備份的數(shù)據(jù)為單一文件系統(tǒng)
可以利用了level 0~9進(jìn)行備份,同時(shí)可以使用 dump 完整功能
當(dāng)待備份的數(shù)據(jù)只是目錄,并非單一文件系統(tǒng)
限制:
所有備份數(shù)據(jù)必須都在該目錄下
僅能使用 level 0 進(jìn)行數(shù)據(jù)備份
不支持-u 參數(shù),即無(wú)法創(chuàng)建/etc/dumpdates 這個(gè) level 備份的時(shí)間記錄文件
語(yǔ)法:dump [-Suvj] [-level] [-f 備份文件]待備份數(shù)據(jù)
dump -W
選項(xiàng)與參數(shù):
-S:僅列出后面的待備份數(shù)據(jù)需要多少磁盤空間才能夠備份完畢
-u:將這次備份記錄到/etc/dumpdates 文件中
-v:將 dump 文件過(guò)程顯示出來(lái)
-j:加入 bzip2的支持,將數(shù)據(jù)進(jìn)行壓縮,默認(rèn)壓縮等級(jí)2
-level:備份等級(jí)0~9
-f:備份文件
-W:列出在/etc/fstab 里面的具有 dump 設(shè)置的分區(qū)是否有過(guò)備份

舉例1:備份掛載到/boot 文件系統(tǒng) level -0

[root@localhost ~]# dump -S /boot
16752640
[root@localhost ~]# dump -u -0 -f /root/boot.dump.0 /boot
  DUMP: Date of this level 0 dump: Fri Feb 28 15:05:56 2014
  DUMP: Dumping /dev/sda1 (/boot) to /root/boot.dump.0
  DUMP: Label: /boot
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 16360 blocks.
  DUMP: Volume 1 started with block 1 at: Fri Feb 28 15:05:56 2014
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: Closing /root/boot.dump.0
  DUMP: Volume 1 completed at: Fri Feb 28 15:05:58 2014
  DUMP: Volume 1 16440 blocks (16.05MB)
  DUMP: Volume 1 took 0:00:02
  DUMP: Volume 1 transfer rate: 8220 kB/s
  DUMP: 16440 blocks (16.05MB) on 1 volume(s)
  DUMP: finished in 2 seconds, throughput 8220 kBytes/sec
  DUMP: Date of this level 0 dump: Fri Feb 28 15:05:56 2014
  DUMP: Date this dump completed:  Fri Feb 28 15:05:58 2014
  DUMP: Average transfer rate: 8220 kB/s
  DUMP: DUMP IS DONE   
[root@localhost ~]# cat /etc/dumpdates 
/dev/sda1 0 Fri Feb 28 15:05:56 2014 +0800
=>可以看出 etc/dumpdates 記錄著這次備份信息

舉例2:查看文件系統(tǒng)備份記錄

[root@localhost ~]# dump -W
Last dump(s) done (Dump '>' file systems):
> /dev/sda2     (     /) Last dump: never
> /dev/sda3     ( /home) Last dump: never
  /dev/sda1     ( /boot) Last dump: Level 0, Dat
> /dev/sda6     (/mnt/sda6) Last dump: never
=>可以看出 sda1已經(jīng)進(jìn)行了 level0備份,其他還未備份

舉例3:增量備份 level 1

[root@localhost ~]# dd if=/dev/zero of=/boot/bigfile.img bs=1M count=20
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.320717 seconds, 65.4 MB/s
=>先創(chuàng)建一個(gè)20M 左右的文件
[root@localhost ~]# dump -u -1 -f /root/boot.dump.1 /boot
  DUMP: Date of this level 1 dump: Fri Feb 28 15:17:51 2014
  DUMP: Date of last level 0 dump: Fri Feb 28 15:05:56 2014
  DUMP: Dumping /dev/sda1 (/boot) to /root/boot.dump.1
  DUMP: Label: /boot
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 20543 blocks.
  DUMP: Volume 1 started with block 1 at: Fri Feb 28 15:17:52 2014
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: Closing /root/boot.dump.1
  DUMP: Volume 1 completed at: Fri Feb 28 15:17:53 2014
  DUMP: Volume 1 20580 blocks (20.10MB)
  DUMP: Volume 1 took 0:00:01
  DUMP: Volume 1 transfer rate: 20580 kB/s
  DUMP: 20580 blocks (20.10MB) on 1 volume(s)
  DUMP: finished in 1 seconds, throughput 20580 kBytes/sec
  DUMP: Date of this level 1 dump: Fri Feb 28 15:17:51 2014
  DUMP: Date this dump completed:  Fri Feb 28 15:17:53 2014
  DUMP: Average transfer rate: 20580 kB/s
  DUMP: DUMP IS DONE
[root@localhost ~]# cat /etc/dumpdates 
/dev/sda1 0 Fri Feb 28 15:05:56 2014 +0800
/dev/sda1 1 Fri Feb 28 15:17:51 2014 +0800
=>這次配備寫入備份記錄中
[root@localhost ~]# dump -W
Last dump(s) done (Dump '>' file systems):
> /dev/sda2     (     /) Last dump: never
> /dev/sda3     ( /home) Last dump: never
  /dev/sda1     ( /boot) Last dump: Level 1, Date Fri Feb 28 15:17:51 2014
> /dev/sda6     (/mnt/sda6) Last dump: never
[root@localhost ~]# ll /root/boot* 
-rw-r--r-- 1 root root 16834560 02-28 15:05 /root/boot.dump.0
-rw-r--r-- 1 root root 21073920 02-28 15:17 /root/ boot.dump.1
=> boot.dump.1大小約為20M,可見是增量備份

舉例4:?jiǎn)我荒夸涍M(jìn)行備份

[root@localhost ~]# dump -0 -f /root/etc.dump /etc
  DUMP: Date of this level 0 dump: Fri Feb 28 15:23:39 2014
  DUMP: Dumping /dev/sda2 (/ (dir etc)) to /root/etc.dump
DUMP: Label: /
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 177675 blocks.
  DUMP: Volume 1 started with block 1 at: Fri Feb 28 15:23:41 2014
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: Closing /root/etc.dump
  DUMP: Volume 1 completed at: Fri Feb 28 15:24:23 2014
  DUMP: Volume 1 188600 blocks (184.18MB)
  DUMP: Volume 1 took 0:00:42
  DUMP: Volume 1 transfer rate: 4490 kB/s
  DUMP: 188600 blocks (184.18MB) on 1 volume(s)
  DUMP: finished in 42 seconds, throughput 4490 kBytes/sec
  DUMP: Date of this level 0 dump: Fri Feb 28 15:23:39 2014
  DUMP: Date this dump completed:  Fri Feb 28 15:24:23 2014
  DUMP: Average transfer rate: 4490 kB/s
  DUMP: DUMP IS DONE
[root@localhost ~]# ll /root/etc.dump 
-rw-r--r-- 1 root root 193126400 02-28 15:24 /root/etc.dump

restore 還原

dump 備份的文件由 restore 進(jìn)行還原
語(yǔ)法:
查看 dump 文件:restore –t [-f dumpfile] [-h]
比較 dump 與實(shí)際文件:restore –C [-f dumpfile] –D 掛載點(diǎn)
進(jìn)入互動(dòng)模式(還原單個(gè)文件):restore –i [-f dumpfile]
還原整個(gè)文件系統(tǒng):restore –r [-f dumpfile]
選項(xiàng)與參數(shù):
相關(guān)的各種模式,各種模式無(wú)法混用.例如不可以寫 -tC
-t:此模式用在察看 dump 起來(lái)的備份檔中含有什么重要數(shù)據(jù)!類似 tar -t 功能;
-C:此模式可以將 dump 內(nèi)的數(shù)據(jù)拿出來(lái)跟實(shí)際的文件系統(tǒng)做比較,最終會(huì)列出[在 dump 文件內(nèi)有記錄 的,且目前文件系統(tǒng)不一樣]的文件;
-i:進(jìn)入互動(dòng)模式,可以僅還原部分文件,用在 dump 目錄時(shí)的還原
-r:將整個(gè) filesystem 還原的一種模式,用在還原針對(duì)文件系統(tǒng)的 dump 備份;
其他較常用到的選項(xiàng)功能:
-h:察看完整備份數(shù)據(jù)中的 inode 與文件系統(tǒng) label 等信息
-f:后面就接你要處理的那個(gè) dump 文件
-D:與 -C 進(jìn)行搭配,可以查出后面接的掛載點(diǎn)與 dump 內(nèi)有不同的文件

舉例1:查看 dump 備份文件

[root@localhost ~]# restore -t -f /root/boot.dump.0
Dump   date: Fri Feb 28 15:05:56 2014
Dumped from: the epoch
Level 0 dump of /boot on localhost.localdomain:/dev/sda1
Label: /boot
         2      .
        11      ./lost+found
     10041      ./grub
     10059      ./grub/grub.conf
…….
        14      ./System.map-2.6.18-371.el5
        15      ./config-2.6.18-371.el5
        16      ./symvers-2.6.18-371.el5.gz
        17      ./vmlinuz-2.6.18-371.el5

舉例2:比較文件差異

[root@localhost ~]# mv /boot/message /boot/message-back
[root@localhost ~]# restore -C -f /root/boot.dump.0 -D /boot
Dump   date: Fri Feb 28 15:05:56 2014
Dumped from: the epoch
Level 0 dump of /boot on localhost.localdomain:/dev/sda1
Label: /boot
filesys = /boot
restore: unable to stat ./message: No such file or directory
Some files were modified!  1 compare errors

舉例3:還原整個(gè)文件系統(tǒng)

[root@localhost ~]# dd if=/dev/zero of=/home/newfile bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 3.83857 seconds, 54.6 MB/s
[root@localhost ~]# mkfs -t ext3 /home/newfile 
mke2fs 1.39 (29-May-2006)
/home/newfile is not a block special device.
……
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mount -o loop /home/newfile /mnt
[root@localhost ~]# df -h
文件系統(tǒng)              容量  已用 可用 已用% 掛載點(diǎn)
/dev/sda2             9.5G  4.4G  4.7G  49% /
/dev/sda3             4.8G  339M  4.2G   8% /home
/dev/sda1              99M   42M   53M  45% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/home/newfile         194M  5.6M  179M   4% /mnt
=>創(chuàng)建一個(gè)文件掛載到 mnt 下
[root@localhost ~]# cd /mnt
[root@localhost mnt]# restore -r -f /root/boot.dump.0
restore: ./lost+found: File exists
[root@localhost mnt]# ll
總計(jì) 16149
-rw-r--r-- 1 root root    70400 10-01 21:10 config-2.6.18-371.el5
drwxr-xr-x 2 root root     1024 02-18 09:51 grub
-rw------- 1 root root  2748313 02-18 09:46 initrd-2.6.18-371.el5.img
drwx------ 2 root root    12288 02-14 18:00 lost+found
-rw-r--r-- 1 root root    80032 2009-03-13 message
-rw------- 1 root root    27676 02-28 15:54 restoresymtable
-rw-r--r-- 1 root root   117436 10-01 21:10 symvers-2.6.18-371.el5.gz
-rw-r--r-- 1 root root   996296 10-01 21:10 System.map-2.6.18-371.el5
-rw-r--r-- 1 root root 10485760 02-28 13:25 testing.img
-rw-r--r-- 1 root root  1912148 10-01 21:10 vmlinuz-2.6.18-371.el5
=>還原 level 0備份
[root@localhost mnt]# restore -r -f /root/boot.dump.1
[root@localhost mnt]# ll
總計(jì) 36711
-rw-r--r-- 1 root root 20971520 02-28 15:17 bigfile.img
-rw-r--r-- 1 root root    70400 10-01 21:10 config-2.6.18-371.el5
drwxr-xr-x 2 root root     1024 02-18 09:51 grub
-rw------- 1 root root  2748313 02-18 09:46 initrd-2.6.18-371.el5.img
drwx------ 2 root root    12288 02-14 18:00 lost+found
-rw-r--r-- 1 root root    80032 2009-03-13 message
-

------- 1 root root    27724 02-28 15:55 restoresymtable
-rw-r--r-- 1 root root   117436 10-01 21:10 symvers-2.6.18-371.el5.gz
-rw-r--r-- 1 root root   996296 10-01 21:10 System.map-2.6.18-371.el5
-rw-r--r-- 1 root root 10485760 02-28 13:25 testing.img
-rw-r--r-- 1 root root  1912148 10-01 21:10 vmlinuz-2.6.18-371.el5
=>還原 level 1備份可以看到多了 bigfile.img 這個(gè)增量文件

dd

dd 功能不僅限于創(chuàng)建文件,更多功能在于“備份”,cp,dump 只是簡(jiǎn)單的文件數(shù)據(jù)拷貝,而 dd 可以讀取設(shè)備的所有內(nèi)容,比如 superblock ,boot sector,mete data 等
語(yǔ)法:dd if=”input file” of=”output file” bs=”block” count=”number”
選項(xiàng)與參數(shù):
if:輸入文件,也可以是設(shè)備
of:輸出文件,也可以是設(shè)備
bs:每個(gè) block 的大小,默認(rèn)是512 K
count:block 數(shù)量

舉例1.文件備份

[root@localhost ~]# dd if=~/.bashrc of=/tmp/bashrc 
0+1 records in
0+1 records out
176 bytes (176 B) copied, 7.3142e-05 seconds, 2.4 MB/s
[root@localhost ~]# ll /tmp/bashrc 
-rw-r--r-- 1 root root 176 02-28 16:17 /tmp/bashrc

舉例2:文件系統(tǒng)備份

[root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.dd bs=1M 
101+1 records in
101+1 records out
106896384 bytes (107 MB) copied, 9.60492 seconds, 11.1 MB/s
[root@localhost ~]# ll /tmp/boot.dd
-rw-r--r-- 1 root root 106896384 02-28 16:19 /tmp/boot.dd

舉例3:文件系統(tǒng)還原

[root@localhost ~]# dd if=/tmp/boot.dd of=/dev/sda1 bs=1M

舉例4.文件系統(tǒng)完全復(fù)制
Dump 備份時(shí),我們需要先用 Dump 將文件系統(tǒng)備份,然后創(chuàng)建新的文件系統(tǒng),格式化,再將備份文件還原到新的文件系統(tǒng)。
使用 dd 可以不用格式化,就可以完全復(fù)制一個(gè)文件系統(tǒng),因?yàn)?dd 將 uperblock ,boot sector,mete data 等信息都進(jìn)行復(fù)制,格式化要做的不也正是這些事嗎

[root@bogon ~]# fdisk /dev/sda
…….
Command (m for help): n
……
Command (m for help): P
……
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
……
/dev/sda7            2116        2134      152586   83  Linux

Command (m for help): w
……
[root@bogon ~]# partprobe
=>創(chuàng)建完分區(qū)
[root@bogon ~]# dd if=/dev/sda1 of=/dev/sda7 
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 23.5363 seconds, 4.5 MB/s
[root@bogon ~]# mount /dev/sda7 /mnt
[root@bogon ~]# ll /mnt
總計(jì) 5838
-rw-r--r-- 1 root root   70400 10-01 21:10 config-2.6.18-371.el5
drwxr-xr-x 2 root root    1024 02-18 20:26 grub
-rw------- 1 root root 2748762 02-27 19:45 initrd-2.6.18-371.el5.img
drwx------ 2 root root   12288 02-19 03:59 lost+found
-rw-r--r-- 1 root root   80032 2009-03-13 message
-rw-r--r-- 1 root root  117436 10-01 21:10 symvers-2.6.18-371.el5.gz
-rw-r--r-- 1 root root  996296 10-01 21:10 System.map-2.6.18-371.el5
-rw-r--r-- 1 root root 1912148 10-01 21:10 vmlinuz-2.6.18-371.el5
=> /mnt和/boot 下的內(nèi)容一樣 并且沒有進(jìn)行格式化

mkisofs(鏡像文件備份)

語(yǔ)法:mkisofs [-o 鏡像文件] [-rv] [-m file]待備份的文件 [-V vol] –graft-point isodir=sysdir
選項(xiàng)與參數(shù):
-o:鏡像文件
-r:產(chǎn)生 UNIX/Linux 支持的文件數(shù)據(jù)
-v:顯示構(gòu)建 ISO 的過(guò)程
-m:排除的文件
-V:卷標(biāo)名稱
-graft-point:目錄對(duì)照名稱,如果不進(jìn)行指定所以的信息都會(huì)保持在根目錄

舉例:

[root@bogon ~]# mkisofs -o /tmp/system.img -r -m /home/lost+found -V 'tkf_file' -graft-point /root=/root /home=/home /etc=/etc
[root@bogon ~]# mount -o loop /tmp/system.img /mnt
[root@bogon ~]# ll /mnt
dr-xr-xr-x 114 root root 34816 03-01 14:31 etc
dr-xr-xr-x   3 root root  2048 03-01 14:31 home
dr-xr-xr-x  18 root root  4096 03-01 14:31 root