我最近在我的系統中安裝了 SSD,並將部分 Linux 安裝移至其中。為了安全起見,我想用 rsync 備份我的整個根檔案系統(只是一個克隆,沒有版本控制,沒有增量備份或任何東西),但我有一些問題。
- 我的檔案系統是分散式的。 /var 和 /tmp 位於不同的磁碟上。
- 我知道某些根目錄是虛擬的,但我需要排除它們嗎? (/proc、/dev 等)
- 如果我排除它們,我是否需要在備份磁碟機上建立虛擬/空白版本?
- 或是有什麼簡單的工具可以自動化這個過程。
問題是,我可以簡單地使用 rsync 與一堆開關和排除來備份即時 Linux 系統還是應該使用任何其他工具來做到這一點?
提前致謝。
PS:我精通Linux。先進/棘手的方法不是問題。
答案1
我知道某些根目錄是虛擬的,但我需要排除它們嗎? (/proc、/dev 等)如果我排除它們,我是否需要在備份磁碟機上建立虛擬/空白版本?
是的,您需要排除它們。
至於是否應該有虛擬版本 - 為了讓您的初始化腳本安裝它們,這些目錄需要作為空資料夾存在。所以是的 - 您需要包含存根或空目錄。
問題是,我可以簡單地使用 rsync 與一堆開關和排除來備份即時 Linux 系統還是應該使用任何其他工具來做到這一點?
你能,例如,我經常使用rsync -av --delete /src /dst
;運行備份但是,請注意rsync 根本不處理鎖定/並發訪問。如果您寫入目前正在使用的文件,您將獲得各種運行。
當然,有一種方法可以解決這個問題。假設目前沒有發生寫入,您可以執行:
/bin/mount -no remount,ro /dev/rootdevice
在 rsync 之前,然後:
/bin/mount -no remount,rw /dev/rootdevice
之後(作為 root)。
如果你想備份一個真正即時的、支援寫入的檔案系統,你需要一些可以進行寫入時複製的東西,例如Linux 卷快照。
答案2
我會說使用 cpio 建立存檔並複製它。我說 cpio 是因為它用於初始 ramdisk,因此它可以理解虛擬目錄。嘗試
find / -depth -name | cpio -o >/path/archive.cpio
:)