DB 用RMAN 直接將備份文件放在盤櫃上了,為了以防萬一,老大讓把這些備份文件在copy到一個備份服務器上。 RMAN 對目錄有嚴格的要求,以後如果要恢復,還是還原到相同的目錄。
之前我計劃是將備份服務器共享之後,直接mount 到DB 服務器上,然後在cp 過去,這樣是很簡單的。但是搞系統的大哥建議用ftp來實現。 當時說是不會出現不能umount的情況,還有啥是安全什麼得,這個新年一過也記不清了。 備份服務器上安裝了Server-U 的FTP 服務,配置好之後,把備份文件傳過來就可以了。
三步實現:
(1). 查找符合要求的文件,放到一個臨時文件夾。
(2). 在ftp中使用mput 上傳,上傳完從臨時文件夾中刪除。
(3). 在備份服務器上做好刪除策略。不然空間會撐滿掉。
三點說明:
(1). 如果說只保留2天的話倒簡單,在mput 之前用mdelete 把文件全部刪除掉,在上傳就可以了,因為我這裡要保留多天的記錄。 所以就只能在備份服務器上在弄個批處理的計劃任務來刪除了。
(2). mput 的時候有個問題,它會要求按下回車後在上傳, 這對自動腳本來說是非常麻煩的。 我們需要關閉這個指令。
ftp>prompt
切換交談式指令,使用mput/mget 時不用每個文件皆詢問yes/no
ftp> help prompt
prompt force interactive prompting on multiple commands
ftp> prompt
Interactive mode off.
ftp> prompt
Interactive mode on.
ftp> prompt
Interactive mode off.
ftp>
不加任何參數就可以進行開發或關閉的設備,每執行一次,狀態就會改變。
(3) find -mtime 參數說明
find /u01/backup/backupsets -mtime +1 -name "*" :+號 表示 1天前的文件
find /u01/backup/backupsets -mtime -1 -name "*" :表示1天內的文件
完整腳本:
Linux上傳腳本:
[xezf@localhost scripts]$ cat uploadbackup.sh
#!/bin/sh
find /u01/backup/backupsets -mtime -1 -name "*" -exec cp -f {} /u01/backup/backuptmp /;
ftp -n 192.168.88.251 << EOF
user user password
bin
lcd /u01/backup/backuptmp
prompt
mput *
bye
EOF
cd /u01/backup/backuptmp
rm -rf /u01/backup/backuptmp/*
將uploadbackup.sh腳本添加到crontab,定時執行。
備份服務器刪除腳本:
deletebackupfile.bat
forfiles /p E:/db_backup_history/xezf /m * /d -10 /c "cmd /c del @file"
將這個bat 文件添加到計劃任務,定時執行即可。我這裡保留的是10天。
在自己的本本上測試沒有問題。 找個測試庫跑幾天看看。 沒問題在搬到生產庫上去。
補充一句,具體情況具體對待。