我想對正在運行的伺服器進行備份。每個設定檔和所有內容都無需關閉。
我怎樣才能做到這一點?嘗試全部複製可以嗎?因為我的目錄有問題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,在這種情況下,您將透過網路發送原始資料而不是壓縮資料。
最後是nc
netcat。它接受來自前一個管道的輸入並將其放在網路上,指向名為的電腦上的連接埠 4242目的地名稱。
在接收端我們做相反的事:
透過 nc -l 監聽埠 4242 上的輸入,
如果需要的話,取消 gzip,
最後將其寫入文件。
重要的提示:
您可以在從正在備份的磁碟啟動時執行此操作。但不能保證檔案系統在備份期間保持不變。因此,僅當您可以以只讀磁碟啟動時才嘗試這樣做。 (例如純粹使用ram磁碟)
答案2
我會做的事情與亨內斯
我會建立一個 iso 文件,下載它,將其放在磁碟或 USB 上,然後將副本上傳到 Dropbox,以防萬一。
mkisofs -V LABEL -r DIRECTORY | gzip > backup.iso.gz
我的朋友在rackspace上託管,他告訴我,rackspace用戶可以選擇自動建立iso文件,如果他們遷移到新伺服器,他們可以使用rsync
或其他方式將舊備份儲存在舊雲端伺服器上,然後將其關閉,他們仍然付費,但很便宜。
我不知道您的主機是否提供自動備份系統,或者您是否支付支援費用。如果這是您第一次,值得詢問他們,也許讓他們這樣做。