建立網站備份應該是一個網站管理員最為重要的日常工作之一。但現實情況是,備份這一步往往被很多人忽略,也就是說仍然有很多網管的網站安全意識較低。
所有的Linux/Mac使用者都能夠零經濟成本地透過命令列工具建立網站備份。如果你用的不是Linux/Mac,請關註我們的後續文章——如何在windows上透過軟體方式建立備份。
本文的初衷不是為讀者提供完整的備份解決方案,而是給那些有時間並且想要學習一些基礎的命令列工具進行網站備份的寶寶們一點參考。
你的主機必須具備必要的軟體及證書。
伺服器上的軟體:
tar
電腦上的軟體:
SSH(用於建立/刪除備份檔案)
SCP(用於下載備份檔案)
Terminal(例如gnome-terminal,用於執行所有命令)
所需資訊
伺服器IP及SSH證書
資料庫證書
網站根目錄(以及你想在備份中加入或排除內容的目錄)
資料庫:MySQL、PostgreSQL或SQLite(如果你的網站使用其中一種)
一旦將你的電腦與伺服器相連線,你就可以快速地透過命令進行網站備份。
透過SSH連線伺服器:
SSH是Secure Shell的簡寫,通常用於遠端命令的執行。
開啟terminal,鍵入以下命令,透過SSH協議連入你的伺服器:
在terminal中連上伺服器後,你鍵入的每一條命令都在你的伺服器上執行。接下來,我們要在伺服器上建立一個名為“backup(備份)”的新檔案夾。只要不是公開的,你可以把這個檔案夾放在任何地方。
如果你的web應用根目錄為:/home/username/html,那麼我們就能夠順利在 /home/username/中建立“backup(備份)”的檔案夾。一旦備份傳輸到了電腦,就可以刪除伺服器上的備份記錄。
如果你不知道自己的網站根目錄,可以在cPanel賬戶中找到該資訊:
上圖中我們可以看到該網站的根目錄是:/home/ma658tvk。
在Linux/Mac作業系統中,你可以使用mkdir命令建立目錄。例如:
該命令能夠幫你在/home/username/中建立“backup”目錄。
在該檔案夾中,我們已經建立了4個子目錄:db、core、logs以及conf。
註意mkdir命令中的-p符號,該符號表示:在某目錄已經存在但仍然按需建立主目錄的情況下不會報錯。
將整個應用進行備份的工作非常關鍵,包括資料庫轉儲檔案、核心檔案、外掛以及媒體檔案。如果你想更加細節化一些,還可以對伺服器配置檔案及日誌進行備份。在執行取證分析時,備份資料就更是尤為重要了。
我之所以熱衷於使用命令列工具是因為在進行資料庫備份時都無需再用到其它附加工具。大多數的資料庫引擎都具備命令列功能,只需要拿到資料庫證書,整個過程簡單粗暴高效。
下麵的命令將匯出一個資料庫轉儲檔案並將其放在:/home/username/backup/db/
如果你的網站採用的是MySQL,可執行以下命令:
若為PostgreSQL,則執行這個命令:
這些命令會用到使用者名稱密碼。輸入後(你的terminal中看不到這些字元)轉儲檔案將儲存在事先準備好的backup檔案夾中。
如果網站用的是SQLite,那麼你只需要複製該檔案即可:
現在我們要做的是壓縮網站核心檔案(為了方便起見)。在你的伺服器上安裝tar程式,並確定核心檔案以及其它你想備份或不備份檔案的具體位置。
我們再次假設你的網站儲存在:/home/username/html。那麼使用以下命令建立tar檔案:
如果你想涵蓋/home/username/html中的所有檔案,那麼上面這個命令就非常好用。但如果你不想包含全部呢?
假設你的網站架構如下:
如果我們壓縮了整個目錄,那麼快取(cache)檔案夾也會被備份。而快取檔案完全沒有必要備份,如果刪除這部分內容,可以節省很多時間、節約頻寬。但如果使用tar命令,我們可以透過-exclude這一標識將不需要備份的目錄排除。下麵我們在排除快取目錄的情況下對網站目錄進行再次壓縮:
另外,名為core.tar的voilà – a .tar檔案會儲存在/home/username/backup/core/中。你也可以一直使用-exclude命令對你不需要備份的內容進行排除。
就個人經驗來說,我已經多次受益於配置和日誌檔案的備份了。比如,我已經很多次忘記我的“httpd.conf”長啥樣了,所以每次我都透過查電腦上的備份來解決這個難題。我是一個很懶的人,但請諒解——這個習慣常常能幫上大忙,日誌檔案也是。
配置檔案和日誌檔案沒有通用位置,但你可以在tar命令中新增多個位置。例如:
第一行末尾的“\”符號表示按“Enter”鍵時,terminal不執行命令,而表示該命令含多行的意思。最後一行命令末尾不含“\”字元,表示terminal可以執行命令。這樣,你就可以建立一個包含你係統不同檔案夾中的配置/日誌檔案的.tar檔案了。
只要你在備份的伺服器中安裝了正確的軟體,恢復配置檔案只會讓你對配置檔案進行複製。如果要在生產伺服器中恢復配置檔案,但軟體不同,恢復過程可能會發生很多錯誤。務必小心。
建立最終的tar檔案
到這裡,我們已經把/home/username/backup/檔案夾下所需的檔案都準備好了,現在我們只需要建立.tar檔案並把它下載到我們自己的電腦上即可。雖然我們也可以在不壓縮的情況下下載整個備份檔案夾,但是我還是建議以單個壓縮檔案的方式下載(更加保險、安全)。
該命令將建立一個名為“latest.backup.tar”的檔案,包含所有的備份檔案。在terminal中輸入“exit”就能斷開個人電腦與伺服器的連線。
透過SCP下載檔案
我們需要透過scp命令來下載latest.backup.tar這個檔案:
該命令的作用就是從伺服器上抓取該.tar檔案,並將它下載到你電腦上“ /home/username/backups/domainname/”的檔案夾,然後根據標準日期命令對該檔案夾進行重新命名(如backup_20170730_142422)。
從伺服器中刪除備份
現在網站備份已經安全地躺在你的電腦裡了,我們也就可以放心地刪除伺服器上的備份記錄了。
首先,透過SSH重新登入伺服器,執行以下命令:
上面第一個命令的作用是刪除伺服器上最後的tar檔案,第二個命令用於幫助你從伺服器遞迴地刪除備份檔案夾。
警告!務必確保檔案和檔案夾路徑的準確性,因為要想恢復透過命令列刪除的東西非常困難,而且恢復難度也會隨著時間的增加而增加。一旦某檔案被刪除,該檔案的所有連結均被破壞,作業系統也會隨時釋放該檔案所使用的的區塊。再次宣告:務必確認使用的路徑是正確的。
一旦你刪除了備份檔案,就可以透過輸入exit退出伺服器。
整個網站備份過程完美完成!這不是一個完整的解決方案,但我想這是學習資訊保安領域中備份技術的一個良好開端。
作者:Carrie_spinfo
來源:http://www.freebuf.com/articles/system/145614.html
《Linux雲端計算及運維架構師高薪實戰班》2018年11月26日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –