需求:將數據備份的文件上傳到ftp所在服務器
ftp服務器IP地址:192.168.5.5
ftp服務器賬戶/密碼:jie/jd!2016
1、在數據庫所在服務器上創建ftp.sh腳本,用的root用戶創建的腳本,權限也root用戶
#vi /home/hh/ftp.sh
#!/bin/bash #聲明改文件爲sh腳本可執行文件
CURDATE=$(date '+%Y%m%d') #獲取當天的日期
cd /u01/bacup/ #切換本地目錄
ftp -v -n 192.168.5.5 <<- EOF #執行ftp命令
user jie jd!2016 #用戶名 密碼
binary #以字節傳輸
hash
put NL$CURDATE*.dmp NL$CURDATE.dmp
put HL$CURDATE*.dmp HL$CURDATE.dmp
bye
EOF
FTP的命令行格式爲:
ftp -v -d -i -n -g [主機名] ,其中
-v 顯示遠程服務器的所有響應信息;
-n 限制ftp的自動登錄,即不使用;.n etrc文件;
-d 使用調試方式;
-g 取消全局文件名。
給ftp.sh腳本執行權限,做計劃任務即可。
2、備份數據庫同時異地上傳備份數據
$ vi /u01/databack/bin/re.sh
#!/bin/sh
source /home/oracle/.bash_profile
timedate=$(date +%Y%m%d%H%M%S)
bakdbname=re
bakdbpasswd=13
dumpdbname=re
bakdbhome=/u01/databack
expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpdbname'_'$timedate.dmp logfile=$bakdbname'_'$timedate.log
cd /u01
zip -r databack/$dumpdbname'_'$timedate.zip databack/$dumpdbname'_'$timedate.dmp databack/$bakdbname'_'$timedate.log
find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;
find $bakdbhome/*.dmp -exec rm -rf {} \;
cd $bakdbhome
ftp -v -n 192.168.5.5 >>${bakdbname}_${timedate}.log << EOF
user jieshida jsd!2016
binary
hash
put ${dumpdbname}_${timedate}.zip ${dumpdbname}_${timedate}.zip
bye
EOF
#iconv -f gb2312 -t utf8 ${bakdbname}_${timedate}.log -o ${bakdbname}_${timedate}.log