oracle用expdp方式備份腳本
阿新 • • 發佈:2018-07-04
ftp服務 source find 服務器 一個 bye 腳本 目錄 st2 需求:備份oracle數據庫並將數據備份的文件上傳到ftp所在服務器
ftp服務器IP地址:192.168.6.9
ftp服務器賬戶/密碼:test/test2018
ftp服務器IP地址:192.168.6.9
ftp服務器賬戶/密碼:test/test2018
1、oracle用戶創建備份腳本路徑:
#su - oracle
$ mkdir /u0/app/backup/bin
$ cd /u01/app/backup/bin
2、創建備份腳本:
$ vi /u01/app/backup/bin/bak.sh #!/bin/sh source /home/oracle/.bash_profile timedate=$(date +%Y%m%d%H%M%S) bakdbname=hb bakdbpasswd=h1234 dumpbame=hd bakdbhome=/u01/app/backup expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log zip -r $bakdbhome/$dumpbame-$timedate.zip $bakdbhome/$dumpbame-$timedate.dmp $bakdbhome/$bakdbname-$timedate.log #壓縮dmp文件及日誌文件 find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \; find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \; cd $bakdbhome #切換到備份文件目錄下 ftp -v -n 192.168.6.9 << EOF #執行ftp命令 user test test2018 #用戶名和密碼 binary #切換傳輸模式為二進制模式,以字節傳輸(除文字文件外皆用此模式) hash #切換#字號的出現,每一個#字號表示傳送了1024/8192BYTES put $dumpbame-$timedate.zip $dumpbame-$timedate.zip bye EOF #將日誌文件的GB2312轉為UTF-8編碼,這樣腳本執行的log日誌文件中文不會亂碼 iconv -f gb2312 -t utf8 $bakdbname-$timedate.log -o $bakdbname-$timedate.log find $bakdbhome/*.dmp -exec rm -rf {} \; #前面壓縮後,刪除原dmp文件
FTP的命令行格式為:
ftp -v -d -i -n -g [主機名] ,其中
-v 顯示遠程服務器的所有響應信息;
-n 限制ftp的自動登錄,即不使用;
hash:每傳輸1024字節,顯示一個hash符號(#);
.n etrc文件;
-d 使用調試方式;
-g 取消全局文件名;
bye:退出ftp會話過程;
get下傳文件;
mget批量下傳文件,需配合萬用字元,例如:MGET*.GZ;
put上傳文件;
mput批量上傳文件,需配合萬用字元;
recv相當於GET(RECV為RECEIVE的簡寫):
send相當於PUT。
給bak.sh腳本執行權限,做計劃任務即可
$ crontab -l 10 0 * * * /bin/bash /u01/app/backup/bin/bak.sh
oracle用expdp方式備份腳本