我可以透過 ssh 克隆正在運行的伺服器的根檔案系統嗎?

我可以透過 ssh 克隆正在運行的伺服器的根檔案系統嗎?

我想對正在運行的伺服器進行備份。每個設定檔和所有內容都無需關閉。

我怎樣才能做到這一點?嘗試全部複製可以嗎?因為我的目錄有問題root

我不想做很多實驗,因為它有一個重要的配置。

我正在嘗試通過ssh.我該如何進行此備份?

有任何想法嗎?

答案1

如果你想備份所有數據,那麼你可以透過 ssh 登入伺服器,然後簡單地複製所有檔案。例如與scp或與rsync

如果您使用的話,您甚至可以複製包括作業系統檔案在內的所有內容
rsync -zvr --exclude /dev/ / destination_computer_name_or_ip

-r:遞歸
-v:詳細
-z:啟用壓縮

請注意,這不會複製引導記錄。為此,您需要複製整個磁碟,並且需要在未安裝磁碟時執行此操作。 (閱讀:關閉您想要完全完整備份的電腦並從 liveCD 啟動或從另一個分割區啟動。)

然後使用 dd 讀取整個磁碟機。

範例程式碼:

用於儲存備份的 PC:
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo

並在PC上進行備份:
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination

dd 將從磁碟讀取。整個磁碟,包括引導磁區和空磁區。
在範例中,我們將其設定為 sd 所示的第一個磁碟A。將第二個磁碟調整為 sdb,將第三個磁碟調整為 sdc,依此類推。

我們輸出到 std out,由-.

bs=1M 設定區塊大小。你不需要這個,但如果沒有這個,將會有許多小的讀取和巨大的開銷。將其設為大於 512 位元組或 4k 的值會加快速度。

接下來,我們|透過 gzip 傳輸輸出以對其進行壓縮。這假設您的 CPU 將比您的網路快得多。您可以跳過來源上的 gzip 和目標上的gunzip,在這種情況下,您將透過網路發送原始資料而不是壓縮資料。

最後是ncnetcat。它接受來自前一個管道的輸入並將其放在網路上,指向名為的電腦上的連接埠 4242目的地名稱


在接收端我們做相反的事:

透過 nc -l 監聽埠 4242 上的輸入,

如果需要的話,取消 gzip,

最後將其寫入文件。


重要的提示:

您可以在從正在備份的磁碟啟動時執行此操作。但不能保證檔案系統在備份期間保持不變。因此,僅當您可以以只讀磁碟啟動時才嘗試這樣做。 (例如純粹使用ram磁碟)

答案2

我會做的事情與亨內斯

我會建立一個 iso 文件,下載它,將其放在磁碟或 USB 上,然後將副本上傳到 Dropbox,以防萬一。

mkisofs -V LABEL -r DIRECTORY | gzip > backup.iso.gz

我的朋友在rackspace上託管,他告訴我,rackspace用戶可以選擇自動建立iso文件,如果他們遷移到新伺服器,他們可以使用rsync或其他方式將舊備份儲存在舊雲端伺服器上,然後將其關閉,他們仍然付費,但很便宜。

我不知道您的主機是否提供自動備份系統,或者您是否支付支援費用。如果這是您第一次,值得詢問他們,也許讓他們這樣做。

相關內容