[教學]cPanel空間定時自動備份資料庫並寄至信箱

對於一個網站、部落格、論壇來說,最重要的東西末屬於資料庫。資料庫裡面放著你網站的所有資料,包括:網站文章、回覆、網站設定……等。對網站管理員來說經常的備份資料庫是很重要的,萬一主機掛點、資料遺失、被駭客入侵,都還可以利用先前備份的數據進行還原,讓網站能夠盡快恢復現狀、也讓損失降至最低。

使用WordPress的用戶大多都會安裝一個備份資料庫的外掛:WordPress Database Backup或WP-DBmanager,讓外掛自動替你備份資料庫。用外掛備份最大的好處就是可以自己設定時間避免自己忘記或沒空備份,也防止空間掛點可能造成的遺憾。俗話說:多一個外掛就會拖累主機一點速度,因此我們可以利用Cpanel空間的自動排程「Cron Jobs」來備份資料庫,也替你省下使用一個外掛所佔的資源。

架設網站的程序真的太多了,不見得每個管理員都會選WordPress,畢竟還要考慮使用習慣、用途。問題是很多架站程序都沒有像WordPress擁有這種自動備份資料庫的外掛來讓管理員使用。這麼一來,管理員就要每天到網站後台系統的phpMyAdmin去手動備份,只要一天沒備份到就會多一分的危險,所以手動備份不僅很累人也不是明智的選擇。

談到cPanel空間的好處真的是說不完,除了擁有一般架站需要的功能外,還附加許多貼心的小功能如:郵件、流量報表、備份精靈、安全防護……等,而這次我們就是要寫一個腳本,利用cPanel空間才有的「Cron Jobs」來排定執行時間,只要設定時間一到空間就會自動執行腳本--備份資料庫→把資料庫壓縮成壓縮檔→把壓縮檔寄到指定的信箱。這樣不費一絲力氣也能輕輕鬆鬆備份資料庫,多棒啊~!

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-新增backup資料夾

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

cd /home/使用者帳號/backup #切換到工作目錄
stamp=`date +%y%m%d` #獲得當前時間
mysqldump -u資料庫使用者名稱 -p資料庫密碼 資料庫名稱 >  db_backup_$stamp.sql #導出數據庫
bzip2 -z -9 -f db_backup_$stamp.sql #壓縮數據庫
mutt 電子信箱 -a db_backup_$stamp.sql.bz2 -s "database backup" #郵件發送
rm db_backup_$stamp.sql.bz2 #移除臨時文件

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-新增dbbackup.sh

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

  • 使用者帳號:如下圖中的goodman
  • 資料庫使用者名稱:如下圖中的goodman_wordpress
  • 資料庫密碼:如下圖中的test123
  • 資料庫名稱:如下圖中的goodman_blog
  • 電子信箱:如下圖中的fff222lf2@gmail.com

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-編輯dbbackup.sh及儲存

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-上傳dbbackup.sh

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-設權限755

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-進入cron jobs

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-選standard

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

  • Minute:分鐘,一般建議選擇「:00 top of the hour(0)」(整點)。
  • Hour:小時,一般建議選擇「11:00 p.m. (23)」(晚上11點)。
  • Day:第幾天,一般建議選擇「Every day」。
  • Month:第幾月,一般建議選擇「Every month」。
  • Weekday:星期幾,一般建議選擇「Every weekday」。
  • Command to run:腳本的位置,填入「/home/使用者帳號/backup/dbbackup.sh」。

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-打入相關訊息

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

[教學]Cpanel空間定時自動備份資料庫並寄至信箱-收信

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

:因為我們要存放的腳本內有你的資料庫帳號、密碼,從你登入空間所看到的第一層目錄就是「/」,一般是最不容易被破解的。而一般我們所稱的根目錄「/public_html」就是在它的底下。

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

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

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

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

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

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

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

:有兩種可能。

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

本文作者: 有殺氣追殺你

個人介紹 | 查看其他文章

臉書留言()
一般留言(20)
  • 你好,不知道能不能備份兩個以上數據庫呢?因為我的 UC 和 DZ 是分開建立數據庫的,還請殺氣指教。

    謝謝分享 cPanel 小撇步哦~

    殺氣說:
    可以啊
    你可以用兩個腳本在分別指向不同的資料庫即可。

  • 9
    阿輝

    mutt我安裝好了 已經不會寄來錯誤

    但是只剩下

    /home/janan/backup/dbbackup.sh: line 2: date+%y%m%d: command not found

    還是會顯示這行

    也不會把資料庫寄來,請站長幫幫我 拜託

    我至複製你寫得,應該不會出錯吧

    stamp=$(date+%y%m%d) #獲得當前時間

    殺氣說:
    基本上這行不影響整體的運作,因為是我的時間語法有錯,目前已經重新修改過(第二行和最後一行)
    剛剛我有測試過了,應該是沒問題了

  • 沒關係,等你寫 :)

    殺氣說:
    謝謝拉,感謝妳的耐心等待^^

  • 7
    阿輝

    怎樣知道我的空間有沒有支援mutt呢

    另外我是寄到gmail.com的信箱

    可是我資料庫超過50mb了

    這樣以後可以寄嗎?

    第五行我是這樣填的 應該不會錯吧

    mutt ut801458@gmail.com -a db_backup_$stamp.sql.bz2 -s "database backup" #郵件發送

    殺氣說:
    1.理論上空間都有安裝mutt,至於如何查詢可能就要發信問一下主機商囉
    2.應該可以寄八,我朋友的論壇大概是34mb左右,他依然照用不誤
    3.沒有錯啊,看來可能是你空間真的沒裝mutt

  • 6
    阿輝

    站長你好 我照你得方法用了

    可是他寄給我一封信

    內容是:

    /home/janan/backup/dbbackup.sh: line 2: date+%y%m%d: command not found
    /home/janan/backup/dbbackup.sh: line 5: mutt: command not found

    請問出什麼問題呢 幫幫我

    殺氣說:
    1.第一行的錯誤不須理會,那只是時間的代碼好像有誤而已
    2.第二行的錯誤不是你有填錯,就是你的空間不支援mutt,先確認看看吧

  • 嗯,那就期待你寫的檔案自動備份方式囉 ;)

    殺氣說:
    恩,不過中間還會穿插1篇文章,因此我估計在7天後我才會發出來

  • 很簡單的方法,我也去做設定了,感激分享這項教學 :)

    殺氣說:
    恩,很簡單的方法卻受用無窮
    這樣就不怕沒備份到資料庫數據了

    至於你想要的檔案備份我最近也會寫出來

  • 写的挺好的。有空我会常来看看你的博客。

    殺氣說:
    謝謝你的讚美

  • 我還是比較愛用外掛
    管理起來比較方便
    如果用Cpanel的話我怕會忘記友去設定
    到時候網站換主機就好笑了

    殺氣說:
    確實,外掛是集中管理比較容易找到
    不過多一個外掛就會拖累一點速度.

  • 喔!不錯,看起來很實用 顆顆

    殺氣說:
    恩恩,不錯吧

發表留言