Rsync

將大型快照映像複製到遠端儲存 Linux

  • November 12, 2019

我需要複製在 Proxmox (KVM) 伺服器上執行的虛擬機的快照並將快照複製到異地儲存。

大多數快照只有幾 GB,但有些快照相當大,高達 200 GB。我寧願一次性壓縮和複製快照,例如:

xz -c dumpfile | scp offsite

問題是由於轉儲文件和其他需要同時執行的作業的大小,這可能需要 12 小時或更長時間,在此期間可能會發生很多中斷數據流的情況。

使用 rsync 如果傳輸中斷,我可以恢復傳輸,但是在發送之前必須壓縮整個文件,需要在分配給快照的 250g 之上再增加 150g。由於伺服器上的儲存非常寶貴(僅限 ssd),我寧願不必分配額外的磁碟空間

也許將壓縮的輸出拆分成較小的 pkzip 樣式,並在它們準備好時將它們傳輸到隊列中,這可能是一個解決方案嗎?Tar 似乎有一個可以使用的多卷 (-m) 選項。問題是壓縮過程需要停止,直到最後一個壓縮部分被轉移。

我在這裡尋找想法,而不是真正的具體解決方案。我覺得我錯過了一些明顯的選擇。盡可能使用標準的 Linux 軟體。

**RTFM的經典案例,不好意思。**仔細閱讀 TFM,發現 vzdump 提供了一個 –compress 選項,可以即時壓縮轉儲,因此我進一步減少了所需空間。然後我繼續將 compressesd 轉儲同步到備份伺服器,並從管理程序中刪除轉儲。

最終的劇本變成了

vzdump $VZID --mode snapshot --compress lzo --mailnotification failure --mailto my@email.address \
   && rsync -e ssh vzdump-qemu-${VZID}-* backup:/backup \
   && rm -f vzdump-qemu-${VZID}-* \
           || mail my@email.address -s "transfer of $VZID failed" < vzdump-qemu-${VZID}-*.log

~

我將建議ChunkFS一個 fuse 文件系統,它允許任何使用者掛載文件並將其拆分為文件目錄,每個文件都是某個給定大小的。然後,您可以將這些文件 rsync 到遠端並在那裡連接它們。

但是,我注意到同一個人 Florian Zumbiehl 也編寫了 ChunkSync,它結合了 ChunkFS 的功能和 rsync 的功能(不使用 fuse)。它旨在允許對大文件(例如加密文件系統)進行增量備份,其中只有大文件的一小部分發生更改。它有效地將文件拆分為塊並備份每個塊,對自上次備份以來未更改的塊使用硬連結。您可以使用 ssh 指定目的地。即使進行單個備份,它也應該很有用。

引用自:https://serverfault.com/questions/991190