Linux ftp 自動上傳備份檔案指令碼

2021-08-26 06:14:30 字數 1748 閱讀 3966

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 後面兩個分別為使用者名...