如何透過 ssh 建立 Live 系統的鏡像?

如何透過 ssh 建立 Live 系統的鏡像?

我有一個關於目前無法訪問的 FreeBSD 伺服器的問題。但因為我們想嘗試一些新東西,所以我們想先建立該系統的備份。

問題是:是否有可能透過 ssh 從目前處於活動狀態的整個伺服器磁碟建立磁碟映像?

如果有:我想知道該怎麼做。

答案1

在Linux下這實際上是不可能的。它在Windows下的原因是卷影複製。

如果您的系統使用 LVM,您可以拍攝快照,然後rsync取得檔案的原子副本,但是您需要還原分割區/開機載入程式。

如果必須這樣做,最簡單的方法是使用dd複製它:

dd if=/dev/sda | ssh user@remotehost 'dd of=/path/to/output'

然後,為了 100% 確保您的檔案沒問題,rsync從正在執行的檔案到您dd安裝映像後的磁碟機。 (我已經跳過了rsync數百次差異,沒有任何不良影響,但這只是在基於大量讀取的伺服器存取權上)

答案2

使用轉儲(8)建立(檔案)系統的快照。

dump -0aLf /path/to/dumpfile /

這將建立根檔案系統的即時轉儲並將其儲存到 /path/to/dumpfile。此轉儲可以透過 ssh 傳輸到另一台電腦。或者你可以使用這個一次性完成。

dump -0aLf - | ssh my.backup.server dd of=/path/on/my/server/dumpfile

稍後可以透過以下方式恢復:

cd /where/I/should/restore
restore -xf /path/to/dumpfile

資料庫等應用程式必須單獨處理。例如,對於 MySQL 資料庫,您可以使用 mysqldump 建立一個 sql 命令的文字文件,該文件可以在另一個 MySQL 伺服器上運行,以便匯入到那裡。其他資料庫也有類似的方法。

答案3

如果只有一個 root-fs 可以簡單地複製到您的目標電腦上,請使用類似以下內容的內容:

rsync --numeric-ids --delete -vax source_machine:/ /target_dir

兩次或更多次。第二次運行已經重複使用了第一次運行中的快取條目,運行速度非常快,並且提供了幾乎真實的快照,但有一些限制。您可以透過簡單地重複「rsync」任意次數來觀察「原子性」。大多數情況下,迭代之間真正發生變化的檔案(日誌檔案等)很少(因此需要複製/刪除)。

相關內容