您當前的位置:首頁 > 收藏

如何把VPS上的整個系統備份下來?

作者:由 韓非 發表于 收藏時間:2013-04-07

如何把VPS上的整個系統備份下來?yegle2013-05-02 23:25:57

生產環境不會這麼做的。別拿windows的習慣過來。linux下沒必要搞ghost

如何把VPS上的整個系統備份下來?知乎使用者2013-05-02 23:46:16

使用 ssh 將整個 /dev/sda dd 到本地一個 *。img 中不知道符不符合樓主的要求

如何把VPS上的整個系統備份下來?胡工2013-05-03 00:54:13

聽題主說VPS,那麼假設伺服器是使用了某服務商的基於虛擬機器的虛擬伺服器,而不是自行安裝的硬體伺服器系統。

這時要看你的服務商和你的伺服器設定方法了。如果是amazon aws的架構就非常簡單,aws直接提供了img克隆的功能,停機clone一個映像就好了。

而象Linode這樣的架構,則有兩種方法:一種是多花點錢直接克隆到另外一臺虛擬機器上,一種是安裝系統時就設定一個容量等於root的備份盤,需要備份的時候clone root為備份盤即可。這種方法沒有額外的費用,只是佔用了一部分空間。如果需要恢復系統時,在啟動配置裡將備份盤改為root重啟就可以了。

要是你的服務商不支援虛擬盤的克隆,這種想法可能就不能實現了。按

@Cloud

用ssh固然能備份下來,但是出現故障時又如何線上恢復呢?待高手指點。

最後免責宣告,系統克隆只能作為資料備份的補充手段,本人不對按以上方法操作造成的資料丟失負責。而題主說的備份要求和方法,其實經常被IT公司拿來做伺服器的快速安裝、設定。這根據具體架構就有更多的處理方式了。

如何把VPS上的整個系統備份下來?陳含林2013-05-04 02:13:52

先直接回答你的問題:

rsync -aAXv /* /path/to/backup/folder ——exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

來自

Full System Backup with rsync

然後就是恢復的時候你會發現mysql起不來了,跑來大罵我坑爹。

——

所以我真正的回答是這樣的:

首先搞清楚到底哪些服務是在跑的,搞清這些服務的執行檔案, 資料檔案,配置檔案,依賴,佔用。

這樣才能進行備份:

針對執行檔案, [檢查依賴+安裝]指令碼,這個時候會發現有包管理是多麼美妙。

針對資料檔案, 這是最主要的部分, 要保證備份的完整一致可用,你得根據服務寫出針對的指令碼,比如mysql就得用到mysqldump或者xtrabackup。

針對配置檔案, 這是最有意思的部分, 把每個服務的配置檔案都變成模板, 然後抽取變數,放到一個總的配置檔案裡面。然後有個指令碼讀取這個配置檔案之母,呼叫一些方法/指令碼生成一套所有服務的配置檔案,還帶複製到指定路徑。

所有的指令碼和模板和配置都要有版本控制

然後完了麼? 沒完, 得寫一個恢復指令碼, 裝個虛擬機器,線上弄個數據檔案的備份, 加上模板,改改總配置, 指定幾個引數看能不能完整恢復出一個能用的環境。

這樣才基本上算備份了“整個系統”, 還沒提監控備份的成功失敗,備份的安全問題。

——

為了未來不折騰, 建議為每個服務抽象出一套運維操作指令碼/方法, 涵蓋安裝更新回滾解除安裝清理備份啟動停止過載warmup生成配置增刪改自定義等等, 好吧是不是看起來像面向物件了? 誰說運維不是死程哼哼

——

以下是我的腦補

看到這裡估計很多人要哭了:“大哥我只是想備份幾個配置,至於整這麼一大串麼?!”

:運維本來就是這麼個系(keng)統(die)的工作, 網上隨便找個文件編譯安裝手改配置起服務這種赤腳醫生的行為也就是一時爽。。。。。

如何把VPS上的整個系統備份下來?dboy2018-02-23 23:34:30

用對廠商

一線服務商,如 Vultr / DigitalOcean / Linode,都有整機備份或生成snapshot,然後一鍵從snapshot恢復的服務,有的需要你建立VPS主機的時候選擇是否開啟這個服務(可能有額外費用,但幾乎可以忽略不計)。

所以解決這個問題的答案是:用提供整機備份或一鍵snapshot生成和恢復服務的VPS。

二三線,很便宜的VPS廠商很可能不提供,一分錢一分貨。

標簽: 備份  配置檔案  服務  指令碼  VPS