只要是在線上的東西都很難保證安全。它會被駭、你也可能安裝不對的東西、一個錯誤的組態可能會帶來災難、伺服器的硬碟可能毀損,還有天災及一些此處未考慮到的問題。最佳保全的方式,簡單來說就是 "備份" 這兩個字。







而,備份含括了兩個重要的東西:"資料庫備份"與"檔案備份"。許多網站主機皆提供選項,供你選擇要怎麼備份,但可能都有所限制:



.只能透過你的控制視窗手動備份。沒有備份自動化/排程的功能。

.自動化備份 - 但不是免費。

.自動化備份是免費的,但回復就不是了。



大部份 CMS 與部落格軟體是有許多 plugins 可以用來備份資料庫。但是檔案怎麼辦 ? 特別是你在一個主機帳號裡擁有超過一個以上的網址時,該怎麼辦。這篇文章就是要告訴你如何自動化檔案的備份 - 只要三個簡單步驟。



注意:這裡的教戰守則僅針對 linux 的主機。不過你還是可以依循類似的步驟,對 windows 的主機,進行類似動作。



步驟一 ) 透過命令列備份



你可以用 tar 作這件事。有了 tar 這個命令,就可以針對一整個目錄樹,迅速建立壓縮的打包檔。



程式碼:

tar cvzf ~/backups/backup_`date +%w`.tgz ~/public_html



解說:

.tar 是命令的名稱。

.針對壓縮的這個動作:c => 壓縮;v => 冗長模式;z => gzip

.~/backups => 將備份你 backups 目錄下存放的所有東西 ( ~ 為你家目錄的捷徑縮寫)。這種方式實作在:當你要儲存的備份是放在一個無法直接透過 http 存取的目錄下 - 例如你外面的 public_html 目錄時,是很不錯的

.backup_`date +%w`.tgz => 備份檔的檔名格式為 backup_<每週幾>.tgz。這種循環緩衝的模式,會在備份超過一週後,自動以最新的蓋掉舊的,避免耗費整個網站空間。你可以依需求與網站的可用空間,對此修改 - 查看 date 指令的 man page 瞭解它的用法 (在命令列執行 man date)。

.~/public_html => 指的是要備份的目錄。你的網站最有可能的就是放在這個目錄下。若不確定,請洽你的主機提供商。



步驟二) 透過命令列,寄送你自已的備份。(伺服器可能會出現某些問題、硬碟也可能掛點,或者,你在伺服器裡的備份也可能不見,因此這個動作是有其必要的)



程式碼:

mutt -s "Backup `date`" -a ~/backups/backup_`date +%w`.tgz myuserid@mymail.com



解說:

.mutt => 傳送郵件的使用者郵件代理程式。(你也可以用別的,只是我偏好用它)

.-s "Backup `date`"=> -s 選項是在命令列上用來指定郵件主旨使用。此處會以備份日期為主旨。

.-a ~/backups/backup_`date +%w`.tgz => -a 選項指定要附加的檔案。

.myuserid@mymail.com => 指定要寄送之郵件的 mail 帳號。

.</dev/null  => 郵件內容空白。若你想在這裡加進郵件內容,可以把它作成檔案的型式,例如 "email.txt",然後把內容寫在這個檔裡,再將這個項目換成 <email.txt



步驟三) 最後步驟。把所有動作自動化。你要作的只是把上述命令寫進一個 script ,然後找個方式讓這個 script 自動執行。



這個 script 看起來會像是這樣:



程式碼:

1.

#!/bin/bash

2.

tar cvzf ~/backups/backup_`date +%w`.tgz ~/public_html

3.

mutt -s "Backup `date`" -a ~/backups/backup_`date +%w`.tgz myuserid@mymail.com



儲存為 "backup.sh" 檔,並令此檔為可執行模式 - 執行 "chmod +x backup.sh" 命令即可。我們假定你是將此檔存放在 ~/.backups 目錄下。但你可以把它存在任何地方 - 只要你記得。



到了這裡,你還需要告知伺服器:在指定的時間,自動執行此檔。在此我們使用 cron 來作 (若你不習慣使用命令列,可以登入你的網站控制畫面,找一個叫作 cron 的選項,在那裡你可以在圖形介面下進行排程規畫)。 執行下面命令:



程式碼:

crontab -e



此動作將開啟你排程的任務檔案。請確認你沒動到現有的任何行列。將下面的行列加到最末端。



程式碼:

1.

MAILTO="myusername"

2.

00 22 * * * ~/backups/backup.sh



第一行我們是要確認 script 的輸出、任何的錯誤訊息等等,都會被傳送到你在本地端的郵件帳號,讓你可以在除蟲過程中進行檢查。



第二行格式則為 “# m h dom mon dow command”

m => 小時內的

h => 每日幾

dom => 每個月的哪一

mon => 每年的哪個

dow => 每週的星期

command => 要執行的命令



因此,上述命令將於每天 10:00 PM GMT 執行。

你可將此行依需求修改。



到這裡全部作完了,只要等到指定時間,再檢查你的郵件信箱是否有備份檔就可以了。若你遇到任何問題、有任何想法,或想問有關自行客製化的問題,都歡迎讓我知道。



【本系列下一篇】



【自動備份網站 - Part II (減少備份檔的大小)】

【自動備份網站 - Part IIb (減少備份檔的大小-續)】

【自動備份網站 - Part III (Cron 讓事情變簡單)】



原文詳見:

【Table of contents for AutomateWebBackup



如有版權問題,請來信 (nicaliu at gmail dot com) 告知,謝謝



[ad#ad-perpost]
創作者介紹
創作者 nicaliu 的頭像
nicaliu

尼卡.Nica

nicaliu 發表在 痞客邦 留言(0) 人氣()