Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux系統常見問題解答 >> Linux下自動備份文件到遠程FTP服務器並刪除指定日期前的備份

Linux下自動備份文件到遠程FTP服務器並刪除指定日期前的備份

日期:2017/1/20 17:42:34      編輯:Linux系統常見問題解答

這裡要把/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?

Copyright © Windows教程網 All Rights Reserved