Ssh

RHEL +通過網路備份巨大的分區到本地文件夾

  • July 15, 2021

我們要執行/DB_TABLES從遠端伺服器到我們本地的備份/bck

ssh root@main_server "tar cfz - /DB_TABLES" |tar xz -C /bck

由於 /DB_TABLES遠端伺服器上的分區是1.4T,我們要確保以下方法是將大分區備份到本地文件夾的正確方法

掛載到 /bck 的本地文件夾來自 2T 磁碟

情況很複雜

柏油

ssh root@main_server "tar czf - /DB_TABLES" |tar xzf - -C /bck

(注意z之前f在評論中指出,以及f -在提取中tar

將文件從遠端傳輸main_server到本地/bck目錄,因為/DB_TABLES不小,一些文件可能在傳輸完成時已經更改,結果/bck可能不連貫。

rsync

rsync --archive --verbose --relative --delete root@main_server:/DB_TABLES/ /bck

稍微好一點,rsync會在兩邊收集文件,然後傳輸新的或更改的文件。第一次rsync將傳輸所有文件。之後,希望能夠轉移較小的數量;但是,如果/DB_TABLES在收集階段之後更改文件,它們將被遺漏(例如,未傳輸)。

如果您有很多小文件,您可能會並行執行 (1)

rsync --archive --verbose --relative --delete root@main_server:/DB_TABLES/dir1/ /bck
rsync --archive --verbose --relative --delete root@main_server:/DB_TABLES/dir2/ /bck
(...)

(1) 不保證正確的語法。

數據庫

您必須確保/確保文件在/DB_TABLES傳輸期間沒有更改(ssh+tar或者rsync),如果可以實現(例如通過停止數據庫),那麼任何一種解決方案都可以工作(rsync從長遠來看可能會更快)。

您可能需要校準多長時間rsync才能知道停止/掛起數據庫的時間。

如果無法停止數據庫,請使用遠端同步機制(如果提供)(日誌傳送、從屬庫)。

鑽頭

一個昂貴但有效的解決方案是嘗試實際恢復數據(例如,建構本地副本並蒐索最新插入的記錄)。這將涉及許多資源和許多人,還可能包括一個或多個實際停止生產的數據庫。理想情況下,該測試應每年/每季度進行一次。

引用自:https://unix.stackexchange.com/questions/658157