Linux備份命令詳解
創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),外鏈,廣告投放平臺為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
(2008-11-0807:58:34)
轉(zhuǎn)載
標(biāo)簽:
雜談
分類:LINUX學(xué)習(xí)
vdump的常用方式:
1). 對于文件需要在只讀方式下備份的文件,建議進(jìn)入單用戶:
# init s 或
boot–fl s
2). 對操作系統(tǒng)各MOUNT點進(jìn)行備份
3). # mount -a
# vdump -0uvf/dev/ntape/tape0_d1 /
# vdump -0uvf/dev/ntape/tape0_d1 /usr
# vdump -0uf/dev/ntape/tape0_d1 /var (如過var區(qū)是做為單獨的文件子集也需要單獨備份)
-f : 設(shè)備文件名 ( 比如 DDS tape driver)
-u : 更新/etc/vdumpdates,用于增量備份
- v: 備份內(nèi)容詳細(xì)列表
- 0 : 零級備份
/dev/ntape0_d1: 系統(tǒng)執(zhí)行完畢后,磁帶停止在當(dāng)前位置,可繼續(xù)往下備份
/;/usr;/var : 各文件系統(tǒng)的MOUNT點
4). 其他說明
a、該命令方式對系統(tǒng)當(dāng)前mounted的文件系統(tǒng)進(jìn)行備份
b、備份級別說明
備份級別有0~9個級別,如果當(dāng)前系統(tǒng)采用零級備份,當(dāng)下一次采用5級備份時,系統(tǒng)僅將會對有變化的文件進(jìn)行備份。
系統(tǒng)恢復(fù)常用命令--vrestore
恢復(fù)整個操作系統(tǒng)各文件系統(tǒng)的內(nèi)容:
1). 準(zhǔn)備工作:
a. 準(zhǔn)備一個可用的新硬盤,容量大小和原盤基本相符。
b. 準(zhǔn)備一套與備份系統(tǒng)相同版本的安裝光盤
2). 用操作系統(tǒng)安裝光盤啟動到安裝界面,調(diào)整新硬盤各分區(qū)大小后進(jìn)入單用戶。
* bootdqa0 (dqa0 為SRM下的光驅(qū)設(shè)備號)
* 按正常安裝步驟選著OK—》NEXT—》NEXT---》NEXT—NEXT---NEXT-CUSTOMIZEFILE SYSSTEM LAYOUT(調(diào)整分區(qū)大?。?-》QUIT OR SHELL WINDOW。
* 注意:在調(diào)整新硬盤分區(qū)時一定要在引導(dǎo)塊上選擇ADVFS,并定義B區(qū)為SWAP
3). 創(chuàng)建操作系統(tǒng)的各文件系統(tǒng)。(如系統(tǒng)新盤為 dsk0)
mkfdmn/dev/disk/dsk0a root_temp (創(chuàng)建文件系統(tǒng)域)
mkfset root_temproot (創(chuàng)建文件子集)
mkfdmn/dev/disk/dsk0g usr_temp
mkfset usr_temp usr
mkfset usr_temp var(條件:在原系統(tǒng)中VAR為單獨的文件子集)
注:在高級文件系統(tǒng)創(chuàng)建過程中,域名只要不和原來沖突,命名是任意的。但對文件子集命名方面最好和原來一致。(以避免不必要的修改工作)
4). 操作系統(tǒng)各文件系統(tǒng)的的恢復(fù)
#mount root_temp#root/mnt
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1 (恢復(fù)該文件系統(tǒng)上所有數(shù)據(jù))
#cd /
#umount /mnt
#mount usr_temp#usr/mnt
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1
#cd /
#umount /mnt
#mount usr_temp#var/mnt (條件:VAR為單獨的文件子集)
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1
-f: 設(shè)備文件名
-x: 恢復(fù)磁帶當(dāng)前備份數(shù)據(jù)段上的所有數(shù)據(jù)
- v: 備份內(nèi)容詳細(xì)列表
5). 如果恢復(fù)硬盤與備份盤在系統(tǒng)中設(shè)備名的不同(如:備份盤為dsk0,恢復(fù)盤為dsk1)需要做以下修改:
#mount root_temp#root/mnt
#cd /mnt/etc/fdmns
#cd root_domain
#rm *
#ln –s/dev/disk/dsk1a
#cd ..
#cd usr_domain
#rm *
#ln –s/dev/disk/dsk1g
#cd /mnt/etc
#vi sysconfigtab
將swapdevice=/dev/disk/dsk0b修改為swapdevice=/dev/disk/dsk1b
6). SHUTDOWN系統(tǒng),在SRM下,用新盤引導(dǎo)
恢復(fù)文件系統(tǒng)中某些目錄或文件:
#vrestore –if/dev/ntape/tape0_d1
(/) add vmunixgenvmunix (在系統(tǒng)根區(qū)備份中只恢復(fù)vmunix和genvmunix兩個文件)
(/) extract (開始恢復(fù))
對個別或若干個目錄單獨恢復(fù)同上
操作磁帶機需要注意的幾個問題
磁帶機在備份過程中是分段記錄的,在恢復(fù)時一定考慮磁帶的位置問題。按上述備份例子,在數(shù)據(jù)帶上一共創(chuàng)建了3段獨立的數(shù)據(jù)備份信息(/;/usr;/var)。以下命令可調(diào)整數(shù)據(jù)帶的位置。
#mt rewind (磁帶機回卷磁帶到初始位置)
需要單獨恢復(fù)/usr文件系統(tǒng)或個別文件信息:
#mt rewind
#mt fsf 1 ( 跳過第一個數(shù)據(jù)備份段 / )
如果以上需求發(fā)生在/var上則:
#mt rewind (跳過前兩個數(shù)據(jù)備份段)
#mt fsf 2
(1)使用tar命令備份數(shù)據(jù)的格式如下:
$ tar cvf backup.tar /home/html
上述命令是將/home/html 目錄下的所有文件打包成tar文件backup.tar.
(2)使用tar命令恢復(fù)數(shù)據(jù)的格式如下:
$ tar xvf backup.tar
上述命令將備份文件backup.tar恢復(fù)到當(dāng)前目錄下。
首先切換到root用戶下,執(zhí)行sudo su
并執(zhí)行cd / 切到跟路徑下,再按下面執(zhí)行操作
執(zhí)行命令df -h
查看分區(qū)磁盤情況,一些沒有作用的分區(qū)可以不用備份的。比如說mnt,一般都是掛載的光驅(qū)文件,還有media等。
使用命令 tar cvpzf backup.tgz --exclude=/data --exclude=/datafile /
還是要根據(jù)自己的實際情況來選擇舍棄,先分析一下你的各分區(qū)大小,在看看備份的路徑分區(qū)大小夠不夠。我這里是將不用的datafile和data分區(qū)舍棄了,備份的文件名backup.tgz存放路徑是“/”路徑(因為足夠大,就索性全備了)
ps:“cvpfz”是tar的選項,意思是“創(chuàng)建檔案文件”、“保持權(quán)限”(保留所有東西原來的權(quán)限)、“使用gzip來減小文件尺寸”。
執(zhí)行命令后,linux就立即開始了備份作業(yè),備份過程截圖備份完成后有如下的一個警告提示,應(yīng)該是不影響的。
我們來看看備份的最終成果吧,在“/”路徑下執(zhí)行命令:ls -l
可以看到備份的文件backup.tgz了
也可以用命令df -h看看/根目錄分區(qū)的使用狀態(tài),比未備份前少了8%,約7G左右
這里教大家如何用find、xargs和tar命令完成上面的功能。
建立一個測試環(huán)境,新建幾個文件
# cd /tmp
# mkdir test
# cd test
# touch a.php b.js c.css 1.png
# ls
1.png ?a.php ?b.js ?c.css
接下來,通過find命令找出指定后綴的文件,為了支持多個后綴文件,find命令用到了正則匹配
# find . -type f -regex ".*\.\(php\|js\|css\)"
./b.js
./a.php
./c.css
-regex后面的參數(shù)看起來很復(fù)雜,其實很簡單,我來做個解釋,雙引號就不需要解釋了吧
.*\.\(php\|js\|css\) 簡化一下就是.*.(php|js|css),其實就是對.()|做了下轉(zhuǎn)義而已,開頭的.*匹配除換行符外的任意字符(這個懂正則表達(dá)式的應(yīng)該都明白)
找出文件后,就是如何備份這些文件了,tar需要指定源文件,怎么獲取find出來的這些文件,并傳給tar呢,xargs的作用就來了??吹较旅鎥args輸出的是什么了吧,這個正是tar需要的。
# find . -type f -regex ".*\.\(php\|js\|css\)" | xargs
./b.js ./a.php ./c.css
# find . -type f -regex ".*\.\(php\|js\|css\)" | xargs tar czvf test.tar.gz
./b.js
./a.php
./c.css
下面看看文件是否備份成功了
# tar tzvf test.tar.gz
-rw-r--r-- root/root ? ? ? ? 0 2014-03-14 10:38 ./b.js
-rw-r--r-- root/root ? ? ? ? 0 2014-03-14 10:37 ./a.php
-rw-r--r-- root/root ? ? ? ? 0 2014-03-14 10:38 ./c.css
做法是:
1、在保存?zhèn)浞菸募哪夸?xxx 下建立一個文件 backup.sh,其內(nèi)容是:
tar -zcf bin.tar.gz /bin
tar -zcf boot.tar.gz /boot
tar -zcf dev.tar.gz /dev
tar -zcf etc.tar.gz /etc
tar -zcf lib32.tar.gz /lib32
tar -zcf lib64.tar.gz /lib64
tar -zcf lib.tar.gz /lib
tar -zcf opt.tar.gz /opt
tar -zcf sbin.tar.gz /sbin
tar -zcf selinux.tar.gz /selinux
tar -zcf srv.tar.gz /srv
tar -zcf var.tar.gz /var
tar -zcf usr.tar.gz /usr
2、在需要備份的時候進(jìn)入到保存?zhèn)浞輧?nèi)容的目錄執(zhí)行一次命令: sh backup.sh
3、在保存?zhèn)浞菸募哪夸?xxx 下建立一個叫 restore.sh 的文件,其內(nèi)容如下:
tar -zxf /mnt/xxx/bin.tar.gz
tar -zxf /mnt/xxx/boot.tar.gz
tar -zxf /mnt/xxx/dev.tar.gz
tar -zxf /mnt/xxx/etc.tar.gz
tar -zxf /mnt/xxx/lib32.tar.gz
tar -zxf /mnt/xxx/lib64.tar.gz
tar -zxf /mnt/xxx/lib.tar.gz
tar -zxf /mnt/xxx/opt.tar.gz
tar -zxf /mnt/xxx/sbin.tar.gz
tar -zxf /mnt/xxx/selinux.tar.gz
tar -zxf /mnt/xxx/srv.tar.gz
tar -zxf /mnt/xxx/var.tar.gz
tar -zxf /mnt/xxx/usr.tar.gz
4、如果需要系統(tǒng)恢復(fù),我就用光盤啟動,mount 原來的根目錄為 yyy,接著 mount 保存?zhèn)浞菸募哪夸洖?xxx,接著進(jìn)入到 /mnt/yyy,并在此下達(dá)命令: sh /mnt/xxx/restore.sh
1.Linux系統(tǒng)需要備份的數(shù)據(jù)
/root/目錄:
/home/目錄:
/var/spool/mail/目錄:
/etc/目錄:
其他目錄:
數(shù)據(jù)備份的原則: 不要把雞蛋放在同一個籃子里
2.安裝服務(wù)的數(shù)據(jù)
apache需要備份的數(shù)據(jù)
配置文件
網(wǎng)頁主目錄
日志文件
mysql需要備份的數(shù)據(jù)
源碼包安裝的mysql:/usr/local/mysqld/data/
RPM包安裝的mysql:/var/lib/mysql/
3.備份策略
完全備份: 完全備份就是指把所有需要備份的數(shù)據(jù)全部備份,當(dāng)然完全備份可以備份整塊硬盤,整個分區(qū)或某個具體的記錄(需要更大的硬盤空間和時間)
增量備份: 第一天完全備份,第二天備份當(dāng)天新增數(shù)據(jù),第三天備份當(dāng)天數(shù)據(jù),即每次都是備份新增數(shù)據(jù),每次備份后數(shù)據(jù)要進(jìn)行壓縮(需要較小的硬盤空間恢復(fù)麻煩)
差異備份: 第一天完全備份,第二天備份當(dāng)天新增數(shù)據(jù),第三天備份相比原始備份新增數(shù)據(jù),即每次都是備份與原始數(shù)據(jù)相比的新增數(shù)據(jù)(比完全備份需要的空間小一點,比增量備份恢復(fù)容易一點)
1.dump命令
dump [選項] 備份之后的文件名 原文件或目錄
選項
-level? ? ? ? ? ? ? ? ? ? 就是我們說的0-9十個備份級別
-f 文件名? ? ? ? ? ? ? 指定備份之后的文件名
-u? ? ? ? ? ? ? ? ? ? ? ? ? 備份成功之后,把備份時間記錄在/etc/dumpdates文件
-v? ? ? ? ? ? ? ? ? ? ? ? ? 顯示備份過程中更多的輸出信息
-j? ? ? ? ? ? ? ? ? ? ? ? ? 調(diào)用bzib庫壓縮備份文件,其實就是把備份文件壓縮為.bz2格式
-W? ? ? ? ? ? ? ? ? ? ? ? 顯示允許被dump的分區(qū)的備份等級及備份時間
備份分區(qū)實例
dump -0uj -f /root/boot.bak.bz2 /boot/? ? ? ? 備份命令,先執(zhí)行一次完全備份,并壓縮和更新備份時間
cat /etc/dumpdates? ? ? ? ? ? ? ? 查看備份時間文件
cp install.log /boot/? ? ? ? ? ? ? ? 復(fù)制日志文件到boot分區(qū)
dump -luj -f /root/boot.bak1.bz2? ? ? ? ? ? ? 增量備份/boot分區(qū),并壓縮
dump -W? ? ? ? ? ? ? ? ? 查詢分區(qū)的備份時間及備份級別的
備份文件或目錄實例
dump -0j /root/etc.dump.bz2 /etc/? ? ? ? 完全備份/etc/目錄,只能使用0級別進(jìn)行完全備份,而不再支持增量備份
注意: dump只能針對分區(qū)做增量備份,對文件或目錄不能進(jìn)行增量備份
2.restore命令
restore [模式選項] [選項]
模式選項:restore命令常用的模式有一下四種,這四個模式不能混用
-C? ? ? ? ? ? 比較備份數(shù)據(jù)和實際數(shù)據(jù)的變化
-i? ? ? ? ? ?? 進(jìn)入交互模式,手工選擇需要恢復(fù)的文件
-t? ? ? ? ? ?? 查看模式,用于查看備份文件中擁有哪些數(shù)據(jù)
-r? ? ? ? ? ?? 還原模式,用于數(shù)據(jù)還原
選項
-f? ? ? ? ? ? 指定備份文件的文件名
比較備份數(shù)據(jù)和實際數(shù)據(jù)的變化
mv /boot/vmlinuz-2.3.32--279.el6.i686 /boot/vmlinuz-2.6.32-279.el6.i686.bak
把boot目錄中內(nèi)核鏡像文件改個名字
restore -C -f /root/boot.bak.bz2
restore發(fā)現(xiàn)內(nèi)核鏡像文件丟失
查看模式
restore -t -f boot.bak.bz2
還原模式
還原boot.bak.bz2分區(qū)備份
mkdir boot.test
cd boot.test/
先還原完全備份的數(shù)據(jù)
restore -r -f /root/boot.bak.bz2
再恢復(fù)增量備份的數(shù)據(jù)
restore -r -f /root/boot.bak1.bz2
還原/etc/目錄的備份etc.dump.bz2
restore -r -f etc.dump.bz2
還原etc.dump.bz2備份