最近在對Oracle 數據庫使用冷備tar遷移時,遇到需要將當前數據庫文件下下的datapump導出的文件過濾掉,要不然然會產生很大的tar文件以及耗用網絡傳輸時間。其實tar命令為我們提供了過濾功能,只不過由於過濾功能通常使用的比較少,所以很多人不知道。本文描述了tar命令下如何過濾不需要的文件或文件夾。
1、演示環境
#當前的tree 目錄下存在BBB,CCC以及BNR子目錄,現在需要將gz的dump文件過濾掉,也就是不參與打包 [oracle@linux1 ~]$ tree AAA AAA |-- BBB | `-- SYTST_temp.dbf |-- BNR | |-- dump | | |-- emp.dmp.gz | | |-- tb.dmp.gz | | `-- xx.dmp.gz | `-- full |-- CCC | `-- tempSYTST.dbf |-- SYTST.sh `-- initSYTST.ora 5 directories, 7 files
2、演示如何進行過濾
#方法一,下面通過exclude參數進行過濾,使用通配符 [oracle@linux1 ~]$ tar -czvf A1.tar.gz --exclude '*.gz' ./AAA ./AAA/ ./AAA/CCC/ ./AAA/CCC/tempSYTST.dbf ./AAA/BBB/ ./AAA/BBB/SYTST_temp.dbf ./AAA/SYTST.sh ./AAA/initSYTST.ora ./AAA/BNR/ ./AAA/BNR/full/ ./AAA/BNR/dump/ #查看包中的內容,沒有任何gz文件 [oracle@linux1 ~]$ tar -tvf A1.tar.gz drwxr-xr-x oracle/oinstall 0 2013-12-13 14:10:43 ./AAA/ drwxr-xr-x oracle/oinstall 0 2013-12-13 14:12:18 ./AAA/CCC/ -rwxr-xr-x oracle/oinstall 209723392 2013-12-13 14:12:19 ./AAA/CCC/tempSYTST.dbf drwxr-xr-x oracle/oinstall 0 2013-12-13 14:11:56 ./AAA/BBB/ -rwxr-xr-x oracle/oinstall 104865792 2013-12-13 14:11:56 ./AAA/BBB/SYTST_temp.dbf -rwxr-xr-x oracle/oinstall 1281 2013-12-13 14:10:43 ./AAA/SYTST.sh -rwxr-xr-x oracle/oinstall 2949 2013-12-13 14:10:31 ./AAA/initSYTST.ora drwxr-xr-x oracle/oinstall 0 2013-12-13 14:11:12 ./AAA/BNR/ drwxr-xr-x oracle/oinstall 0 2013-12-13 14:11:12 ./AAA/BNR/full/ drwxr-xr-x oracle/oinstall 0 2013-12-13 14:11:04 ./AAA/BNR/dump/ #方法二,下面通過使用多個exclude參數進行過濾 [oracle@linux1 ~]$ tar -czvf A2.tar.gz --exclude='tempSYTST.dbf' --exclude=SYTST_temp.dbf ./AAA ./AAA/ ./AAA/CCC/ ./AAA/BBB/ ./AAA/SYTST.sh ./AAA/initSYTST.ora ./AAA/BNR/ ./AAA/BNR/full/ ./AAA/BNR/dump/ ./AAA/BNR/dump/xx.dmp.gz ./AAA/BNR/dump/tb.dmp.gz ./AAA/BNR/dump/emp.dmp.gz #方法三,借助於exclude參數,直接將需要過濾得文件添加到文件,然後再從文件讀取 [oracle@linux1 ~]$ echo "*.dbf" >>exclude.txt [oracle@linux1 ~]$ echo "*.gz" >>exclude.txt [oracle@linux1 ~]$ more exclude.txt *.dbf *.gz [oracle@linux1 ~]$ tar -czvf A3.tar.gz --exclude-from=exclude.txt ./AAA ./AAA/ ./AAA/CCC/ ./AAA/BBB/ ./AAA/SYTST.sh ./AAA/initSYTST.ora ./AAA/BNR/ ./AAA/BNR/full/ ./AAA/BNR/dump/ #方法四,借助於exclude參數,可以直接使用目錄加通配符的方式來過濾指定文件夾下的所有文件 [oracle@linux1 ~]$ tar -czvf A4.tar.gz --exclude=./AAA/BNR/dump/* ./AAA ./AAA/ ./AAA/CCC/ ./AAA/CCC/tempSYTST.dbf ./AAA/BBB/ ./AAA/BBB/SYTST_temp.dbf ./AAA/SYTST.sh ./AAA/initSYTST.ora ./AAA/BNR/ ./AAA/BNR/full/ ./AAA/BNR/dump/ #方法五,借助於exclude參數,直接使用目錄方式來過濾 [oracle@linux1 ~]$ tar -czvf A4.tar.gz --exclude=./AAA/BNR ./AAA ./AAA/ ./AAA/CCC/ ./AAA/CCC/tempSYTST.dbf ./AAA/BBB/ ./AAA/BBB/SYTST_temp.dbf ./AAA/SYTST.sh ./AAA/initSYTST.ora
3、獲取幫助信息
#使用help獲取幫助信息 [oracle@linux1 ~]$ tar --help Usage: tar [OPTION...] [FILE]... GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive. Examples: tar -cf archive.tar foo bar # Create archive.tar from files foo and bar. tar -tvf archive.tar # List all files in archive.tar verbosely. tar -xf archive.tar # Extract all files from archive.tar. ..........省略........... #使用man或者info獲取幫助信息 [oracle@linux1 ~]$ man tar
更多參考
有關Oracle RAC請參考
有關Oracle 網絡配置相關基礎以及概念性的問題請參考:
有關基於用戶管理的備份和備份恢復的概念請參考
有關RMAN的備份恢復與管理請參考
有關ORACLE體系結構請參考