這裡要把/backup/oracledata/ts目錄下面的所有文件備份到/backup/oracledata/tsbak裡面,並且保存為TianShan20140409.tar.gz的壓縮文件(20140409是指備份執行時當天的日期),然後只保留最近7天的備份,再把備份文件通過ftp服務器上傳到指定空間/oraclebackup下,只保留最近7天的數據。
場景說明
操作系統:Centos
FTP: 192.168.148.121 用戶:dell 密碼:123
解決方案:利用Linux crontab-自動化的任務 實現自動備份
實現步驟
1、創建保存備份文件的目錄
[root@localhost ts]# mkdir -p /backup/oracledata/tsbak
2、創建備份腳本文件 tianshanftp.sh vim /backup/oracledata/tsbak/tianshanftp.sh ;輸入以下內容
(詳細的代碼解釋) #!/bin/sh
FTP_IP=192.168.148.121 #ftp地址
FTP_USER=dell #ftp用戶名
FTP_PASS=123 #ftp密碼
FTP_backup=/oraclebackup #ftp上存放備份文件的目錄,需要先在FTP上面建好
BK_DR=/backup/oracledata/tsbak #備份文件存放路徑
DB_DR=/backup/oracledata/ts #已經存在文件
DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
LINUX_USER=root #系統用戶名
date=` date +%Y%m%d `
tar zcvf $BK_DR/TianShan$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改備份數據庫文件的所有者
find $BK_DR -name "TianShan*" -type f -mtime +$DAYS -exec rm {} \; #刪除7天前的備份文件(注意:{} \;中間有空格)
deldate=` date -d -7day +%Y%m%d ` #刪除ftp服務器空間7天前的備份
ftp -i -v -n $FTP_IP 《 END #打開ftp服務器。21為ftp端口 《END 和最後的 END:術語叫:當前文檔here documents. here document 就是一段特殊目的的代碼塊
【#它使用I/O重定向的形式來將一個命令序列傳遞到一個交互程序或者命令中,比如ftp、cat,或者ex文本編輯器。 本句可以理解從《END開始以非對話模式的ftp連接,直到輸入END為止的所有命令。 當然END這個名字是可以隨便取的,不一定必須是END,可以取其它的名字。 】
user $FTP_USER $FTP_PASS #用戶名、密碼
binary #設置二進制傳輸
cd $FTP_backup #進入ftp目錄
lcd $BK_DR #列出本地目錄
mput TianShan$date.tar.gz TianShan$date.tar.gz #上傳目錄中的文件
mdelete TianShan$deldate.tar.gz TianShan$deldate.tar.gz #刪除ftp空間7天前的備份
bye
END
如果手動執行 sh沒有問題的話,而放到crontab 執行報錯話,請把上面的注釋刪掉,在執行試試。可以直接用下面【【】】裡面的代碼即可。
【【 #!/bin/sh
FTP_IP=192.168.148.121
FTP_USER=dell
FTP_PASS=123
FTP_backup=/oraclebackup
BK_DR=/backup/oracledata/tsbak
DB_DR=/backup/oracledata/ts
DAYS=7
LINUX_USER=root
date=` date +%Y%m%d `
tar zcvf $BK_DR/TianShan$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR
find $BK_DR -name "TianShan*" -type f -mtime +$DAYS -exec rm {} \;
deldate=` date -d -7day +%Y%m%d `
ftp -i -v -n $FTP_IP 《 END
user $FTP_USER $FTP_PASS
binary
cd $FTP_backup
lcd $BK_DR
mput TianShan$date.tar.gz
mdelete TianShan$deldate.tar.gz
bye
END 】】
3、修改文件屬性,使其可執行
chmod +x /backup/oracledata/tsbak/tianshanftp.sh
4、修改/etc/crontab vi /etc/crontab 在下面添加
5 2 * * * root /backup/oracledata/tsbak/tianshanftp.sh 》 /backup/oracledata/tsbak/mylog.log 2>&1 #表示每天凌晨2點5分執行備份,並保持對應日志
5、重新啟動crond使設置生效
service crond restart #啟動
每天你在/backup/oracledata/tsbak目錄下面可以看到類似TianShan20140409.tar.gz這樣的壓縮文件,同時在FTP服務器下的 oraclebackup目錄下也有一個TianShan20140409.tar.gz這樣的壓縮文件,
如果需要恢復文件的時候,只需要把這個文件解壓即可
解壓縮:tar -zxvf TianShan20140409.tar.gz?