Ssh
RHEL +通過網路備份巨大的分區到本地文件夾
我們要執行
/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
才能知道停止/掛起數據庫的時間。如果無法停止數據庫,請使用遠端同步機制(如果提供)(日誌傳送、從屬庫)。
鑽頭
一個昂貴但有效的解決方案是嘗試實際恢復數據(例如,建構本地副本並蒐索最新插入的記錄)。這將涉及許多資源和許多人,還可能包括一個或多個實際停止生產的數據庫。理想情況下,該測試應每年/每季度進行一次。