201208201409Tar 備份後 FTP 自動上傳

在 unix like 的系統上,我們會使用 Crontab 來做系統的定期備份,底下就來說說如何撰寫一個簡單的 backup.sh Shell Script 使用 tar 跟 gz 來備份資料,並且利用 FTP 自動備份到另一台主機。

※需要檔案※

  • /etc/crontab -- 設定定期運作的排程
  • backup.sh    -- 撰寫備份的 Shell Script (新增)
  • .netrc          -- 設定 FTP 相關參數  (新增)
  • ftp.conf       -- 設定 FTP 的動作步驟  (新增)

-----------------------------------------------

 ※所需步驟※ 

Step1:撰寫 backup.sh
Step2:設定排程
Step3:設定 FTP 相關參數
Step4:測試

-----------------------------------------------

------ Step1:撰寫 backup.sh ------

# tar 指定可以搭配參數直接使用 gz 做檔案壓縮的動作,可以同時指定多個目錄及檔案

包裝及壓縮: tar zcvf  檔案名稱.tar.gz   欲壓縮的目錄1  [檔案2] [目錄或檔案3...]
解壓縮及解包裝: tar zxvf   
檔案名稱.tar.gz

底下為 backup.sh 的例子,各位請依照需求變更

#!/bin/bash
TODAY=`date +%Y%m%d`
BACKUPDIR=/home/backup
BACKUPNAME="Backup_DNS_$TODAY.tar.gz"
tar zcvf $BACKUPDIR/$BACKUPNAME /etc/named.conf /var/named 
ftp 140.114.88.164 129 < ftp.conf
#... 可以接著寫其他的動作






上述的當中 140.114.88.64 是目的主機的 IP 而後頭的 129 是指定連接埠(哈~那 IP 不是我的,單純做舉例而以)。

------ Step2:設定排程 ------

/etc/crontab 的設定格式

分 時 日 月 星期幾  所要做的動作

# 舉例每日排程做時間校正(每晚 05:20 動作)
20 5 * * * root /usr/sbin/ntpdate clock.stdtime.gov.tw   

上述的 /etc/crontab 需要你有管理者的權限,當然你也是可以將排程寫在 /etc/cron.daily 之類的目錄下。

------ Step3:設定 FTP 相關參數 ------

要能做到 FTP 的自動上傳,你必須先讓 FTP Client 知道「用哪帳號連到哪一台」及「做哪些動作」,最後再「觸發這個動作的運作」。

詳細請參考 man ftp

用哪帳號連到哪一台」:這個目的你必須新增一個 .netrc 並且將這個檔案權限設為 600 「chmod 600 .netrc」否則會無法執行。

.netrc 的檔案格式
machine 目的主機的ip或domain   login  帳號    password  密碼
machine 140.114.88.64 login your_account password your_password

可同時寫多台 FTP server 的資訊到 .netrc 檔案裡。

做哪些動作」:將所有你想做的動作寫到一個檔案去,檔名可自由取,這邊舉例 ftp.conf

bin
prompt
hash
put  *.tar.gz
quit




當然上面舉例的 ftp.conf 內容需要依照你的需求去變更,也不是每個指令都是需要的,詳細在請參考 man ftp。

觸發這個動作的運作」:其實這個動作已經在 Step1 的 backup.sh 中倒數第二行寫完了。他的意思就是把 ftp.conf 所要做的動作導向(<)到 ftp 140.114.88.164 129 去,然後他會自行參考 .netrc 裡的帳號資訊,完成整個上傳的動作。

------ Step4:測試 ------

那就直接執行 backup.sh 囉!如果都 ok 就等下個排程時間到來,去觀察整個運作是否正常。

回應
Google Search
Google
累積 | 今日
loading......
平均分數:0 顆星
投票人數:0
我要評分:
Google