db用rman直接將備份檔案放在盤櫃上了,為了以防萬一,老大讓把這些備份檔案在copy到乙個備份伺服器上。rman對目錄有嚴格的要求,以後如果要恢復,還是還原到相同的目錄。
之前我計畫是將備份伺服器共享之後,直接mount到db伺服器上,然後在cp過去,這樣是很簡單的。但是搞系統的大哥建議用ftp來實現。當時說是不會出現不能umount的情況,還有啥是安全什麼得,這個新年一過也記不清了。備份伺服器上安裝了server-u的ftp服務,配置好之後,把備份檔案傳過來就可以了。
參考:linux find命令-exec引數說明
三步實現:
(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
binlcd /u01/backup/backuptmp
prompt
mput *
byeeof
cd /u01/backup/backuptmp
rm -rf /u01/backup/backuptmp/*
linux crontab定時任務命令詳解
備份伺服器刪除指令碼:
deletebackupfile.bat
forfiles /p e:/db_backup_history/xezf /m * /d -10 /c "cmd /c del @file"
將這個bat檔案新增到計畫任務,定時執行即可。我這裡保留的是10天。
在自己的本本上測試沒有問題。找個測試庫跑幾天看看。沒問題在搬到生產庫上去。
補充一句,具體情況具體對待。
Linux ftp 自動上傳備份檔案指令碼
db用rman直接將備份檔案放在盤櫃上了,為了以防萬一,老大讓把這些備份檔案在copy到乙個備份伺服器上。rman對目錄有嚴格的要求,以後如果要恢復,還是還原到相同的目錄。之前我計畫是將備份伺服器共享之後,直接mount到db伺服器上,然後在cp過去,這樣是很簡單的。但是搞系統的大哥建議用ftp來實...
linux ftp 命令詳解和自動上傳指令碼實現
ftp ascii 設定以ascii方式傳送檔案 預設值 ftp bell 每完成一次檔案傳送,報警提示.ftp binary 設定以二進位制方式傳送檔案.ftp bye 終止主機ftp程序,並退出ftp管理方式.ftp case 當為on時,用mget命令拷貝的檔名到本地機器中,全部轉換為小寫字母...
FTP自動上傳
ftp自動上傳 主要難點是shell中使用ftp客戶端將日誌檔案上傳到伺服器中,當然要先搭建乙個ftp伺服器,並且在cron排程時伺服器要開啟啊 要不然上傳哪兒去。shell bin bash ftp n 10.1.13.36 21 cmds user admin admin 後面兩個分別為使用者名...