[教學]cPanel空間定時自動備份空間檔案並寄至信箱

上次教各位如何利用cPanel自動備份資料庫,雖然說重要的資料庫已經備份起來,但光有資料庫的備份還是不夠。畢竟網站都是由PHP架站程序+MySQL所寫成的,如果沒有檔案那光有資料庫還是不能還原。雖然可以去下載官方的程序,但裡面並沒有你改過的佈景、風格……等重要資料。因此我們還是必須要備份網站的檔案才行。

或許有人會說每個月在手動備份就好。有些Discuz論壇為了會員的方便而開放上傳附件、頭像,但這些東西會員可不會每個月才更新一次,所以囉這些東西管理員也是必須時常去做備份,以免主機掛掉時這些東西也跟著消失,反而會去影響到會員的權益。要管理員每天備份實在有難度,不過俗話說:「科技始終來自於人性」,這時我們就可以再請出「Cron Jobs」來幫大家解決。

上次殺氣介紹的PHP上傳圖片程序--cheverete,我感覺也挺適合用這個來備份喔~!如果你是自己上傳圖片並連到部落格、論壇,你一定不希望這個圖片變成包子,但是免空的品質誰也不能保證。如果能利用腳本來自動備份這些圖片並傳到信箱,相信對大家來說也是一種保障吧!因此殺氣在文中請大家盡量用cP空間的原因也是在此。

這次我們一樣要寫一個腳本,還是運用cPanel、DA空間才有的「Cron Jobs」來排定執行時間,只要設定時間一到空間就會自動執行腳本--備份指定的檔案→把檔案壓縮成壓縮檔→把壓縮檔寄到指定的信箱。不僅僅如此我們還能自己指定要備份的目錄,這樣不費一絲力氣也能輕輕鬆鬆備份檔案,多棒啊~!

第一步:開啟FTP傳輸軟體(FileZilla),登入空間後在「/」底下建立backup」資料夾。【備1】

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-新增資料夾

第二步:開啟編輯軟體(Notepad++),將下面腳本語法複製到文件裡。

cd /home/使用者帳號/backup #切換到工作目錄
stamp=`date +%y%m%d` #獲得當前時間
tar -cf file_$stamp.tar /home/使用者名稱/public_html/要備份的目錄 #打包的目錄
bzip2 -z -9 -f file_$stamp.tar #壓縮檔案
mutt 電子信箱 -a file_$stamp.tar.bz2 -s "File Backup" #發送信件
rm file_$stamp.tar.bz2 #移除臨時檔案

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-複製腳本源碼

第三步:將語法的中文改成你自己的資料,並儲存成「filebackup.sh」。【備2】

  • 使用者帳號:如下圖中的goodman
  • 要備份的目錄:看要備份哪裡的檔案,就填那裏的位置【備3】
  • 電子信箱:如下圖中的fff222lf2@gmail.com

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-修改腳本

第四步:將剛編輯好的「filebackup.sh」上傳至剛剛建立的「backup」資料夾裡面,

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-上傳腳本

第五步將剛剛上傳的「filebackup.sh」設定權限755

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-設權限755

第六步:進入cP後台,把右方卷軸拉到最下面,點選「Cron jobs」。

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-進入cron jobs

第七步:點選「Standard」,直接進入「Cron jobs」的操作畫面。【備4】

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-點選standard

第八步:選擇執行腳本的時間、填入腳本的位置後,點選「Add New Cron Job」。【備5】

  • Minute:分鐘,一般建議選擇「:00 top of the hour(0)」(整點)。
  • Hour:小時,一般建議選擇「11:00 p.m. (23)」(晚上11點)。
  • Day:第幾天,如果常更新的話可以選「Every day」;如果是不常更新可以選「28th (28)」。
  • Month:第幾月,一般建議選擇「Every month」。
  • Weekday:星期幾,一般建議選擇「Every weekday」。
  • Command to run:腳本存放的位置,請填入「/home/使用者帳號/backup/filebackup.sh」。

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-設定

第九步:接著就等你指定的時間到後就可以收到備份信件了。【備6】

[教學]cPanel空間定時自動備份空間檔案並寄至信箱-收到信的演示

【備1】為什麼是在「/」底下建立資料夾

:因為我們要存放的腳本如果保存不善可能會使整個網站掛點,從你登入空間所看到的第一層目錄就是「/」,一般是最不容易被破解的,因此我們選擇放在這。而一般我們所稱的根目錄「/public_html」就是在它的底下。

【備2】檔案名稱可以自己亂取嗎

:基本上是可以的,但是副檔名記得一定要是「.sh」,且第八步腳本位置的那裏也要做更改。

【備3】要備份的目錄那裏該怎麼打呢

:固定位置我已經幫你打好了,因此你只需看你想指定哪個位置就打上去吧。(如果不會打,可以在底下留言問我)

  • 像根目錄:不用打
  • 像wp的佈景打:wp-content/themes
  • 像wp的外掛打:wp-content/plugins
  • 像dz的風格打:templates

【備4】為什麼我沒有出現這一步,而是直接跳第八步呢

:如果你的面板是x3的通常都會沒有;而使用rvskin通常都有這步。

【備5】上面有個框框要填EMAIL,那需要填嗎

:可填可不填,那最主要就是告訴你腳本的運作狀況。如果一直沒收到備份信件建議你填一下,它會寄信告訴你腳本哪裡出錯已導致無法運作。

【備6】為什麼收到信件的時間會和我填的不一樣

:有兩種可能。

  • 信件延遲
  • 主機在國外,所以會有時差的問題

本文作者: 有殺氣追殺你

個人介紹 | 查看其他文章

臉書留言()
一般留言(18)
  • 10
    lazy

    請問這可以用在DA?

    使用者帳號 是空間的帳號? 感謝!

    殺氣說:
    不一定,要看你的那個DA空間是否有「Cron Jobs」這個功能(有的空間會開,有的不會)
    如果你的DA空間有,也就可以適用這個方法(只是操作介面會稍微不同)

    正是,使用者帳號就是空間的帳號

  • 看起来很方便,抽时间试试看。

    殺氣說:
    恩,如果測試過後,希望能把測試結果告知我,thx

  • 按照你給的更新代碼改過之後,還是沒法收到有附加檔案的備份郵件,這回傳來的mail則是以下訊息:

    tar: +%y%m%d.tar: Cannot stat: No such file or directory
    tar: Removing leading `/’ from member names
    tar: Error exit delayed from previous errors
    bzip2: Can’t open input file +%y%m%d.tar: No such file or directory.
    Can’t stat file_date: No such file or directory
    file_date: unable to attach file.
    rm: cannot remove `file_date’: No such file or directory
    rm: cannot remove `+%y%m%d.tar.bz2′: No such file or directory

    我也不知道出了什麼狀況 :(

    殺氣說:
    對阿,我也看不出哪裡有問題
    把每一段錯誤都拿去google搜過了
    得到最有可能的答案恐怕是/tmp 暫存空間不夠或者檔案太大了

  • 7
    zkm

    有兩個 第八部 …您在備註的部分打錯了

    http://img651.imageshack.us/img651/36/20100805014943.png

    是我會錯意了嗎?

    囧rz

    殺氣說:
    1.ㄎ,我又眼殘了,謝謝拉,我已經修正回來囉
    2.有兩個第八步是正常的,那個只是告訴大家可能遇到的情況,
    備註的兩件事情都是和文章中的第八步有關係,因此才會看到有兩個

  • 6
    zkm

    文章中有兩個 [第八部]

    "步" 打錯囉~

    嘗試一下這個方法^_^

    殺氣說:
    1.檢查過4遍了 應該是沒有兩個重複的才對,如果你有看到再麻煩拍照給我看,ths
    2.沒有打錯啊,「步」是指步驟的意思;你說的「部」意思是指數量詞.單位名稱喔

  • 殺氣:

    我的確是寫 /home/carrieli/public_html/blogs 這樣喔,可是還是不行耶!

    殺氣說:
    Sorry,是我的疏忽,也感謝妳的提醒
    目前我已經把腳本語法第三行重新做修正
    原先:tar -cvf file_$stamp.tar /home/使用者名稱/public_html/要備份的目錄 #打包的目錄
    修改完:tar -cf file_$stamp.tar /home/使用者名稱/public_html/要備份的目錄 #打包的目錄

    會列出檔案列表是出在於那個v上面,原先我只是希望他詳細列出詳細檔案的清單/屬性/權限
    但不知為什麼備份根目錄可以順利運作.備份檔案,如果指定目錄好像就會備份不了,因此這次我直接把它拿掉

    另外空間寄給妳的腳本運作情況本身就會有tar: Removing leading `/’ from member names,因此不用再擔心
    如果還是沒辦法順利備份資料,麻煩在告知我一下,THS

  • 我雖然設定好了,可是一直都沒有收到備份的空間檔案,有收到一份主旨為:「Cron /home/carrieli/backup/filebackup.sh」的 mail,可是內文開頭是:tar: +%y%m%d.tar: Cannot stat: No such file or directory
    tar: Removing leading `/’ from member names

    然後就是一連串我的空間檔案位置,以 /home/carrieli/public_html/blogs/ 為開頭(因為我設定要備份 blogs 資料夾底下的檔案)。

    不知道為什麼沒有正確備份,會是因為裡頭還有許多壓縮檔的關係嗎?

    殺氣說:
    試試看少掉尾巴的那一條斜線/
    打這樣應該就可以了 /home/carrieli/public_html/blogs

  • 3
    Czhi

    噢,謝謝咯。用美國那些免費空間,就害怕不穩定,有了每天備份,安心了。

    殺氣說:
    嗯啊,不然每次都還要擔心到底我沒上去備份空間會不會掛點這類的事,超煩的

  • 不會啦,反正我就三不五時來轉轉,昨天就讓我等到啦~而且我馬上就設定好了,這樣方便我備份啦 ^_*

    殺氣說:
    原來如此,這樣應該就不會再發生一次憾事

  • 大感謝!我剛剛也設定好了,這樣就能每天自動備份空間檔案囉,多謝 ^O^

    殺氣說:
    哪裡~!我才要跟你道謝,妳為了等這篇每天都來關心,讓妳等這麼久真不好意思

發表留言