
我有一個關於目前無法訪問的 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」任意次數來觀察「原子性」。大多數情況下,迭代之間真正發生變化的檔案(日誌檔案等)很少(因此需要複製/刪除)。