Backup

Btrfs 快照到非 btrfs 磁碟。加密、讀取權限

  • February 8, 2017

我想試試 Btrfs。我已經發現您可以製作實時系統的快照,但有些事情我還沒有找到答案。好吧,據我所知,快照基本上是某種存檔形式的完整副本。那麼我可以製作我的實時 btrfs 系統的快照並將該快照放在我的非 btrfs 硬碟驅動器(例如 ext4)上嗎?

另外,我正在執行全盤加密(luks)。如果我將快照傳輸到某個地方,它們會被加密嗎?快照是從分區本身複製實際數據(在這種情況下顯然會被加密)還是工作方式不同?

另外,如何保護 btrfs 快照免於讀取訪問?其他使用者可以讀取快照嗎?還是只有root?可以管理嗎?

快照(在這個意義上)是文件系統的一部分。在 btrfs 術語中,它是一個子卷——它是卷上的目錄樹之一。它不是“存檔形式”。製作子卷的快照會創建一個新的子卷,其中包含原始卷在製作快照時的數據。對原始子卷的後續寫入不會影響快照,反之亦然。所有子卷都是同一卷的一部分——它們指定卷中數據的子集(可能重疊)。

在任一子卷中未修改的快照部分共享它們的儲存。創建快照最初不需要儲存,除了快照控制數據;隨著子卷的內容不同,儲存量會隨著時間的推移而增加。

快照創建最重要的屬性是它是原子的:它在某個時間點拍攝數據的圖片。這對於進行備份很有用:如果備份程序從實時系統複製文件,它可能會與對文件的修改進行不良互動。例如,如果一個文件從目錄 A 移動到目錄 B,但備份程序在移動之前遍歷 B 並在移動之後遍歷 A,則該文件不會包含在備份中。快照解決了這個問題:如果快照是在移動之前製作的,文件將在 A 中,如果在移動之後製作,則在 B 中,但無論如何它都會在那裡。然備份份程序可以從快照複製到外部媒體。

由於快照與原始快照位於同一卷上,因此它以相同的方式儲存,例如,如果卷被加密,則它被加密。

快照再現了原始目錄樹,包括權限和所有其他元數據。所以權限和原來的一樣。此外,使用者必須能夠訪問快照目錄本身。如果您根本不希望使用者能夠訪問快照,請在他們無法訪問的目錄下創建它(您可以將快照放置在任何您想要的位置)。

如果您想在文件系統之外製作快照的副本,請訪問或掛載快照,然後使用您喜歡的程序( 、 等)製作cp副本rsync您可以在btrfs wiki中找到範例命令;請參閱手冊頁以獲取完整參考。

我只是補充說 Gilles 的回答,雖然你可以使用“ cp, rsync, , etc.” 要傳輸您的只讀子卷/快照,您還可以使用該btrfs send命令將子卷作為 btrfs 流發送和儲存。btrfs Wiki提到了以下用途:

# btrfs subvolume snapshot -r / /my/snapshot-YYYY-MM-DD && sync
# btrfs send /my/snapshot-YYYY-MM-DD | ssh user@host btrfs receive /my/backups
# btrfs subvolume snapshot -r / /my/incremental-snapshot-YYYY-MM-DD && sync
# btrfs send -p /my/snapshot-YYYY-MM-DD /my/incremental-snapshot-YYYY-MM-DD |
   ssh user@host btrfs receive /backup/home

但您也可以只保存流以供將來使用:

# btrfs subvolume snapshot -r / /my/snapshot-YYYY-MM-DD && sync
# btrfs send /my/snapshot-YYYY-MM-DD |
   ssh user@host 'cat >/backup/home/snapshot-YYYY-MM-DD.btrfs'
# btrfs subvolume snapshot -r / /my/incremental-snapshot-YYYY-MM-DD && sync
# btrfs send -p /my/snapshot-YYYY-MM-DD /my/incremental-snapshot-YYYY-MM-DD |
   ssh user@host 'cat >/backup/home/incremental-snapshot-YYYY-MM-DD.btrfs'

這對於在任意文件系統中儲存逐字 btrfs 快照很有用。比方說,它的優勢tar在於btrfs快照是增量的,並且只發送增量。btrfs Wiki 聲稱這種增量備份方法往往比rsync.

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