自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Btrfs 詳解:快照

系統(tǒng) Linux
這是一個(gè) Btrfs 快照可以幫助你的特別場景。當(dāng)你使用正確的話,快照同時(shí)也為你的電腦提供了很好的備份方案。

這篇文章會(huì)探討什么是 Btrfs 快照,它們?nèi)绾喂ぷ鞯?,你在日常生活中進(jìn)行快照的好處。這篇文章是《Btrfs 詳解》系列文章中的一篇。從 Fedora Linux 33 開始,Btrfs 就是 Fedora Workstation 和 Fedora Silverblue 的默認(rèn)文件系統(tǒng)。

如果你錯(cuò)過了,這里是本系列的上一篇文章:Btrfs 詳解:基礎(chǔ)概念

簡介

想象一下,你長時(shí)間處理一個(gè)文件,反復(fù)添加和撤銷修改。然后,在某個(gè)時(shí)刻你意識(shí)到:兩小時(shí)前你撤銷的部分修改,現(xiàn)在會(huì)非常有用。而昨天在你銷毀那個(gè)設(shè)計(jì)之前,你也已經(jīng)修改了這個(gè)特殊的部分。當(dāng)然,由于你會(huì)定期保存文件,所以舊的改動(dòng)會(huì)丟失。很多人可能都遇到過這樣的情況。如果能恢復(fù)舊版本的文件,而無需定期手動(dòng)復(fù)制,豈不美哉?

這是一個(gè) Btrfs 快照可以幫助你的特別場景。當(dāng)你使用正確的話,快照同時(shí)也為你的電腦提供了很好的備份方案。

下面你會(huì)找到一些關(guān)于快照的例子。如果你想跟著操作,你必須擁有訪問某些 Btrfs 文件系統(tǒng)的權(quán)限和 root 權(quán)限。你可以通過下面命令來驗(yàn)證一個(gè)目錄的文件系統(tǒng)。

$ findmnt -no FSTYPE /home
btrfs

這個(gè)命令會(huì)輸出你 /home/ 目錄的文件系統(tǒng)名稱。如果它是 btrfs,那就可以了。讓我們創(chuàng)建一個(gè)新的目錄去做實(shí)驗(yàn):

$ mkdir ~/btrfs-snapshot-test
$ cd ~/btrfs-snapshot-test

在下面的文本中,你會(huì)看到很多像上面顯示的那樣的命令輸出框。請?jiān)陂喿x/比較命令輸出時(shí)請記住,框中的內(nèi)容在行末會(huì)被換行。這使得識(shí)別跨多行的長行變得困難,降低了可讀性。如果有疑問,試著調(diào)整瀏覽器窗口的大小,看看文本的變化!

Btrfs 快照

讓我們從一個(gè)基本的問題開始:什么是 Btrfs 快照?如果你在文檔 [1] 和維基 [2] 中查找,你不會(huì)立刻找到這個(gè)問題的答案。事實(shí)上,從“功能”一節(jié)里是找不到的。如果你搜索一下,你會(huì)發(fā)現(xiàn)快照和 Btrfs 子卷一起被大量地提及 [3]。所以現(xiàn)在做什么呢?

還記得快照在系列前面的文章里兩次被提到嗎?是這樣說的:

CoW 的優(yōu)勢在哪里?簡單的說:文件被修改和編輯的歷史被保存了下來。Btrfs 保存文件舊版本的引用(inode)可以輕易地被訪問。這個(gè)引用就是快照:文件系統(tǒng)在某個(gè)時(shí)間點(diǎn)的狀態(tài)鏡像。這將是這系列文章里的單獨(dú)的一篇,所以暫時(shí)留到后面介紹。

—— Btrfs 詳解:基礎(chǔ)概念

以及:

另外一個(gè)分離 / 和 /home 的優(yōu)勢是我們可以分別進(jìn)行 快照

—— Btrfs 詳解:子卷

看起來快照是和 Btrfs 子卷相關(guān)的。你可能之前在其他地方聽到過快照,比如說 LVM(邏輯卷管理器)。雖然技術(shù)角度上它們都是為了同一個(gè)目的,但它們在實(shí)現(xiàn)方面有所不同。

每個(gè) Btrfs 快照是一個(gè)子卷。但是,不是每個(gè)子卷都是一份快照。區(qū)別在于子卷里面包含的內(nèi)容。一個(gè)快照是子卷加上一些內(nèi)容:它包含對現(xiàn)在和過去版本的文件的引用(inode)。讓我們看看快照是從哪來的!

創(chuàng)建 Btrfs 快照

想使用快照功能,你需要一個(gè) Btrfs 子卷來進(jìn)行快照。讓我們在測試目錄(~/btrfs-snapshot-test)里創(chuàng)建一個(gè):

$ cd ~/btrfs-snapshot-test
$ sudo btrfs subvolume create demo
Create subvolume './demo'
$ sudo chown -R $(id -u):$(id -g) demo/
$ cd demo

因?yàn)?Btrfs 子卷默認(rèn)是被 root 所有的,你必須用 chown 去修改子卷里的文件的所有權(quán)到普通用戶上?,F(xiàn)在我們在里面新加一些文件:

$ touch foo bar baz
$ echo "Lorem ipsum dolor sit amet, " > foo

你的目錄現(xiàn)在看起來像這樣:

$ ls -l
total 4
-rw-r--r--. 1 hartan hartan  0 Dec 20 08:11 bar
-rw-r--r--. 1 hartan hartan  0 Dec 20 08:11 baz
-rw-r--r--. 1 hartan hartan 29 Dec 20 08:11 foo

讓我們從這里創(chuàng)建第一次快照:

$ cd ..
$ sudo btrfs subvolume snapshot demo demo-1
Create a snapshot of 'demo' in './demo-1'

這就好了。讓我們看看發(fā)生了什么:

$ ls -l
total 0
drwxr-xr-x. 1 hartan hartan 18 Dec 20 08:11 demo
drwxr-xr-x. 1 hartan hartan 18 Dec 20 08:11 demo-1
$ tree
.
├── demo
│   ├── bar
│   ├── baz
│   └── foo
└── demo-1
    ├── bar
    ├── baz
    └── foo

2 directories, 6 files

這看起來是一份拷貝!為了驗(yàn)證,我們從快照里讀取 foo 的內(nèi)容:

$ cat demo/foo
Lorem ipsum dolor sit amet,
$ cat demo-1/foo
Lorem ipsum dolor sit amet,

當(dāng)我們修改原始文件時(shí),真正的效果變得明顯:

$ echo "consectetur adipiscing elit, " >> demo/foo
$ cat demo/foo
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
$ cat demo-1/foo
Lorem ipsum dolor sit amet,

這表明快照仍然持有“舊”版本的數(shù)據(jù):foo 的內(nèi)容沒有改變。到目前為止,你可以通過一個(gè)簡單的文件復(fù)制來實(shí)現(xiàn)完全相同的目標(biāo)?,F(xiàn)在你也可以繼續(xù)處理舊文件了。

$ echo "sed do eiusmod tempor incididunt" >> demo-1/foo
$ cat demo-1/foo
Lorem ipsum dolor sit amet,
sed do eiusmod tempor incididunt

但是在底層,我們的快照實(shí)際上是一個(gè)新的 Btrfs 子卷。你可以通過下面的命令來驗(yàn)證這一點(diǎn):

$ sudo btrfs subvolume list -o .
ID 259 gen 265 top level 256 path home/hartan/btrfs-snapshot-test/demo
ID 260 gen 264 top level 256 path home/hartan/btrfs-snapshot-test/demo-1

Btrfs 子卷 vs. 文件復(fù)制

這一切有什么意義呢?到目前為止快照看起來是一個(gè)更加復(fù)雜的復(fù)制文件的方式。事實(shí)上,快照不僅僅是表面上看起來那么簡單。讓我們來創(chuàng)建一個(gè)更大的文件:

$ dd if=/dev/urandom of=demo/bigfile bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 1.3454 s, 399 MB/s

現(xiàn)在有一個(gè)512 MB 大小的新文件 demo/bigfile 。讓我們創(chuàng)建另一個(gè)快照,這樣在你修改數(shù)據(jù)的時(shí)候就不會(huì)丟失:

$ sudo btrfs subvolume snapshot demo demo-2
Create a snapshot of 'demo' in './demo-2'

現(xiàn)在我們通過追加少量字符串到文件來模擬變化:

$ echo "small changes" >> demo/bigfile

這是生效后的文件結(jié)構(gòu):

$ tree
.
├── demo
│   ├── bar
│   ├── baz
│   ├── bigfile
│   └── foo
├── demo-1
│   ├── bar
│   ├── baz
│   └── foo
└── demo-2
    ├── bar
    ├── baz
    ├── bigfile
    └── foo

3 directories, 11 files

但是真正的神奇的發(fā)生在其他地方。你已經(jīng)復(fù)制了 demo/bigfile ,你現(xiàn)在擁有了兩個(gè)大約 512 MiB 的文件。但是,因?yàn)樗鼈兪遣煌目截?,它們?yīng)該會(huì)占據(jù)共 1 GiB 的空間。記住兩個(gè)文件的差異不超過 10 字節(jié) —— 和原文件大小相比這幾乎沒什么差別。

Btrfs 快照工作原理與文件復(fù)制不同:而是它們保持對當(dāng)前和過去的 inode 的引用。當(dāng)你在文件追加更新時(shí),在底層 Btrfs 分配更多的空間去存儲(chǔ)更新,同時(shí)在原來的 inode 增加對新數(shù)據(jù)的引用。之前的內(nèi)容保持不變。為了便于理解,你可以認(rèn)為這是僅僅“存儲(chǔ)”原文件和修改版本的差異。

讓我們看看這個(gè)效果:

$ sudo compsize .
Processed 11 files, 5 regular extents (9 refs), 3 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL      100%      512M         512M         1.0G
none       100%      512M         512M         1.0G

這個(gè)有趣的數(shù)字出現(xiàn)在 TOTAL 一行:

  • Referenced 是當(dāng)前目錄下所有文件大小的總和
  • Disk Usage 是用于在磁盤上存儲(chǔ)文件分配空間的大小

你有一共 1 GiB 的文件,但存儲(chǔ)它們僅僅占據(jù)了 512 MiB。

Btrfs 快照和備份

目前為止,在這篇文章中,你已經(jīng)看到如何創(chuàng)建 Btrfs 快照和它們的特別之處。有人可能會(huì)想:如果我在我的 PC 本地進(jìn)行一系列的快照,我就有一個(gè)可靠的備份策略。 其實(shí)不是這樣的 。如果 Btrfs 子卷共享的底層數(shù)據(jù)被偶然破壞了(被 Btrfs 之外的東西影響,比如宇宙射線),所有指向這些數(shù)據(jù)的子卷都會(huì)存在相同的錯(cuò)誤。

為了讓快照成為真正的備份,你應(yīng)該將它們存儲(chǔ)到一個(gè)不同的 Btrfs 系統(tǒng)上,例如在一個(gè)外部驅(qū)動(dòng)器上。為了本文的目的,讓我們在一個(gè)文件里創(chuàng)建一個(gè)新的 Btrfs 系統(tǒng),并掛載它來模擬一個(gè)外部驅(qū)動(dòng)。如果你有一個(gè)格式為 Btrfs 的外部驅(qū)動(dòng)器,請隨意替換以下命令中提到的所有路徑來試試!讓我們創(chuàng)建一個(gè)新的 Btrfs 文件系統(tǒng):

注意:下面的命令會(huì)在你的文件系統(tǒng)上創(chuàng)建一個(gè) 8 GB 大小的新文件。如果你想跟著下面的步驟,請確保你的磁盤空間至少有 8 GB 剩余。請不要分配小于 8 GB 到這個(gè)文件,否則 Btrfs 可能在掛載時(shí)會(huì)遇到問題。

$ truncate -s 8G btrfs_filesystem.img
$ sudo mkfs.btrfs -L "backup-drive" btrfs_filesystem.img
btrfs-progs v5.18
See http://btrfs.wiki.kernel.org for more information.
[ ... ]
Devices:
    ID        SIZE  PATH
    1     8.00GiB  btrfs_filesystem.img

這些命令創(chuàng)建了名為 btrfs_filesystem.img 的 8 GB 新文件,同時(shí)在上面格式化了一個(gè) Btrfs 文件系統(tǒng)?,F(xiàn)在你可以像外部驅(qū)動(dòng)器一樣掛載它:

$ mkdir backup-drive
$ sudo mount btrfs_filesystem.img backup-drive
$ sudo chown -R $(id -u):$(id -g) backup-drive
$ ls -lh
total 4.7M
drwxr-xr-x. 1 hartan hartan    0 Dec 20 08:35 backup-drive
-rw-r--r--. 1 hartan hartan 8.0G Dec 20 08:37 btrfs_filesystem.img
drwxr-xr-x. 1 hartan hartan   32 Dec 20 08:14 demo
drwxr-xr-x. 1 hartan hartan   18 Dec 20 08:11 demo-1
drwxr-xr-x. 1 hartan hartan   32 Dec 20 08:14 demo-2

妙,現(xiàn)在掛載在 backup-drive 下面有一個(gè)獨(dú)立的 Btrfs 文件系統(tǒng)!讓我們嘗試進(jìn)行快照并且把快照放進(jìn)去:

$ sudo btrfs subvolume snapshot demo backup-drive/demo-3
Create a snapshot of 'demo' in 'backup-drive/demo-3'
ERROR: cannot snapshot 'demo': Invalid cross-device link

發(fā)生了什么?噢,你嘗試對 demo 進(jìn)行一次快照并把它存在不同的 Btrfs 文件系統(tǒng)里(從 Btrfs 視角來看是一個(gè)不同的設(shè)備)。還記得一個(gè) Btrfs 子卷僅持有對文件和內(nèi)容的引用(inode)?這正是問題所在:文件和內(nèi)容存在于我們的 home 文件系統(tǒng),但不在新創(chuàng)建的 backup-drive 。你得找到一種方式去傳輸子卷和其內(nèi)容到新的文件系統(tǒng)里。

在不同的 Btrfs 文件系統(tǒng)存儲(chǔ)快照

針對這個(gè)目的 Btrfs 工具有兩個(gè)特殊的命令。讓我們首先來看看它們是如何工作的:

$ sudo btrfs send demo | sudo btrfs receive backup-drive/
ERROR: subvolume /home/hartan/btrfs-snapshot-test/demo is not read-only
ERROR: empty stream is not considered valid

另一個(gè)錯(cuò)誤!這時(shí)它告訴你我們想要傳輸?shù)淖泳聿皇侵蛔x的。這是對的:你可以寫入新內(nèi)容到所有目前為止創(chuàng)建的快照/子卷。你可以像這樣創(chuàng)建一個(gè)只讀的快照:

$ sudo btrfs subvolume snapshot -r demo demo-3-ro
Create a readonly snapshot of 'demo' in './demo-3-ro'

不像之前那樣,這里 -r 選項(xiàng)被加到了 snapshot 子命令里。這創(chuàng)建一個(gè)只讀的快照,這很容易去驗(yàn)證:

$ touch demo-3-ro/another-file
touch: cannot touch 'demo-3-ro/another-file': Read-only file system

現(xiàn)在你可以重新嘗試傳輸子卷:

$ sudo btrfs send demo-3-ro | sudo btrfs receive backup-drive/
At subvol demo-3-ro
At subvol demo-3-ro
$ tree
├── backup-drive
│   └── demo-3-ro
│       ├── bar
│       ├── baz
│       ├── bigfile
│       └── foo
├── btrfs_filesystem.img
├── demo
[ ... ]
└── demo-3-ro
    ├── bar
    ├── baz
    ├── bigfile
    └── foo

6 directories, 20 files

成功了!你成功傳輸原來子卷 demo 的一個(gè)只讀快照到一個(gè)外部的 Btrfs 文件系統(tǒng)。

在非 Btrfs 文件系統(tǒng)存儲(chǔ)快照

上面你已經(jīng)看到你如何能存儲(chǔ) Btrfs 子卷/快照到其他的 Btrfs 文件系統(tǒng)。但如果你沒有其他的 Btrfs 文件系統(tǒng)并且不能新創(chuàng)建一個(gè),比如說外部驅(qū)動(dòng)器需要一個(gè)和 Windows 或 MacOS 兼容的文件系統(tǒng),你可以做什么呢?在這種情況下你可以存儲(chǔ)子卷在文件里:

$ sudo btrfs send -f demo-3-ro-subvolume.btrfs demo-3-ro
At subvol demo-3-ro
$ ls -lh demo-3-ro-subvolume.btrfs
-rw-------. 1 root root 513M Dec 21 10:39 demo-3-ro-subvolume.btrfs

文件 demo-3-ro-subvolume.btrfs 現(xiàn)在包含了隨后重建 demo-3-ro 子卷需要的所有東西。

增量地發(fā)送快照

如果你對不同的子卷重復(fù)執(zhí)行這個(gè)操作,你會(huì)發(fā)現(xiàn)在某些時(shí)間點(diǎn)不同的子卷不再共享它們的文件內(nèi)容。這是因?yàn)橄裆厦嬉粯影l(fā)送一個(gè)子卷,去重建這個(gè)單獨(dú)的子卷的所有數(shù)據(jù)將被傳送到目標(biāo)位置。但是,你可以引導(dǎo) Btrfs 只向目標(biāo)位置發(fā)送不同子卷的差異!所謂的增量發(fā)送將保證共享的引用在子卷中仍然共享。為了展示這一點(diǎn),新增一些變動(dòng)到我們原來的子卷:

$ echo "a few more changes" >> demo/bigfile

然后創(chuàng)建另一個(gè)只讀子卷:

$ sudo btrfs subvolume snapshot -r demo demo-4-ro
Create a readonly snapshot of 'demo' in './demo-4-ro'

然后現(xiàn)在發(fā)送它:

$ sudo btrfs send -p demo-3-ro demo-4-ro | sudo btrfs receive backup-drive
At subvol demo-4-ro
At snapshot demo-4-ro

在上面的命令,-p 選項(xiàng)指定了一個(gè)父子卷用來計(jì)算差異。重要的是記住原 Btrfs 文件系統(tǒng)和目標(biāo) Btrfs 文件系統(tǒng)都必須包含相同的、未被修改過的父子卷!確保新的子卷真的在那里:

$ ls backup-drive/
demo-3-ro  demo-4-ro
$ ls -lR backup-drive/demo-4-ro/
backup-drive/demo-4-ro/:
total 524296
-rw-r--r--. 1 hartan hartan         0 Dec 20 08:11 bar
-rw-r--r--. 1 hartan hartan         0 Dec 20 08:11 baz
-rw-r--r--. 1 hartan hartan 536870945 Dec 21 10:49 bigfile
-rw-r--r--. 1 hartan hartan        59 Dec 20 08:13 foo

但你怎樣知道增量發(fā)送只傳輸了子卷間的差異呢?讓我們傳輸數(shù)據(jù)流到一個(gè)文件里然后看看它有多大:

$ sudo btrfs send -f demo-4-ro-diff.btrfs -p demo-3-ro demo-4-ro
At subvol demo-4-ro
$ ls -l demo-4-ro-diff.btrfs
-rw-------. 1 root root 315 Dec 21 10:55 demo-4-ro-diff.btrfs

根據(jù) ls ,這個(gè)文件僅僅只有 315 字節(jié)大小!這意味著增量傳輸只傳輸子卷間的差異,和額外的 Btrfs 相關(guān)的元數(shù)據(jù)。

從快照中恢復(fù)子卷

在繼續(xù)之前,讓我們清理掉這時(shí)候不再需要的東西:

$ sudo rm -rf demo-4-ro-diff.btrfs demo-3-ro-subvolume.btrfs
$ sudo btrfs subvolume delete demo-1 demo-2 demo-3-ro demo-4-ro
$ ls -l
total 531516
drwxr-xr-x. 1 hartan hartan         36 Dec 21 10:50 backup-drive
-rw-r--r--. 1 hartan hartan 8589934592 Dec 21 10:51 btrfs_filesystem.img
drwxr-xr-x. 1 hartan hartan         32 Dec 20 08:14 demo

到目前為止你已經(jīng)成功創(chuàng)建了可讀/寫和只讀的 Btrfs 子卷快照,并把它們發(fā)送到外部。但是,為了把這作為備份策略,還要有一種方式去發(fā)送子卷回原來的文件系統(tǒng)和讓它們再次變?yōu)榭蓪憽3鲇谶@個(gè)目的,我們移動(dòng) demo 子卷到其他地方并且嘗試從最近的快照中重建它。第一步:重命名為 broken 子卷。一旦恢復(fù)成功它會(huì)被刪除:

$ mv demo demo-broken

第二步: 傳回最近的快照到這個(gè)文件系統(tǒng):

$ sudo btrfs send backup-drive/demo-4-ro | sudo btrfs receive .
At subvol backup-drive/demo-4-ro
At subvol demo-4-ro
[hartan@fedora btrfs-snapshot-test]$ ls
backup-drive  btrfs_filesystem.img  demo-4-ro  demo-broken

第三步: 從快照創(chuàng)建一個(gè)可讀寫的子卷:

$ sudo btrfs subvolume snapshot demo-4-ro demo
Create a snapshot of 'demo-4-ro' in './demo'
$ ls
backup-drive  btrfs_filesystem.img  demo  demo-4-ro  demo-broken

上一步非常重要:你不能重命名 demo-4-ro 為 demo ,因?yàn)檫@仍然是一個(gè)只讀子卷!最后你可以檢查你所有你想要的東西是不是在那里:

$ tree demo
demo
├── bar
├── baz
├── bigfile
└── foo

0 directories, 4 files
$ tail -c -19 demo/bigfile
a few more changes

最后的命令告訴你 bigfile 的最后 19 個(gè)字符實(shí)際上是上次變更執(zhí)行的結(jié)果。這個(gè)時(shí)候,你可能想從 demo-broken 復(fù)制最近的更新到新的 demo 子卷。因?yàn)槟銢]有執(zhí)行任何更新,你可以過時(shí)的子卷:

$ sudo btrfs subvolume delete demo-4-ro demo-broken
Delete subvolume (no-commit): '/home/hartan/btrfs-snapshot-test/demo-4-ro'
Delete subvolume (no-commit): '/home/hartan/btrfs-snapshot-test/demo-broken'

就是這樣!你成功從一個(gè)之前存在不同 Btrfs 文件系統(tǒng)(外部介質(zhì))的快照中恢復(fù) demo 子卷。

子卷作為快照的邊界

在本系列的第二篇文章中我提到子卷作為快照的邊界,但這到底是什么意思呢?簡單來說,子卷的一份快照僅包含這個(gè)子卷的內(nèi)容,而不是下面嵌套的子卷。讓我們來看看這個(gè):

$ sudo btrfs subvolume create demo/nested
Create subvolume 'demo/nested'
$ sudo chown -R $(id -u):$(id -g) demo/nested
$ touch demo/nested/another_file

讓我們像以前一樣進(jìn)行一次快照:

$ sudo btrfs subvolume snapshot demo demo-nested
Create a snapshot of 'demo' in './demo-nested'

然后查看里面的內(nèi)容:

$ tree demo-nested
demo-nested
├── bar
├── baz
├── bigfile
├── foo
└── nested
1 directory, 4 files
$ tree demo
demo
├── bar
├── baz
├── bigfile
├── foo
└── nested
    └── another_file

1 directory, 5 files

注意到 another_file 不見了,僅僅是目錄 nested 還在。這是因?yàn)?nbsp;nested 是一個(gè)子卷:demo 的快照包含嵌套子卷的目錄(掛載點(diǎn)),但里面的內(nèi)容是缺失的。目前沒有方法遞歸地執(zhí)行快照去包含嵌套子卷。但是,我們可以利用這個(gè)優(yōu)勢去從快照中排除一些目錄!這通常對那些你容易再現(xiàn)的數(shù)據(jù)有用,或者它們很少變化。例子有虛擬機(jī)或者容器鏡像,電影,游戲文件等等。

在總結(jié)之前,我們移除所有測試過程中創(chuàng)建的東西:

$ sudo btrfs subvolume delete demo/nested demo demo-nested
Delete subvolume (no-commit): '/home/hartan/btrfs-snapshot-test/demo/nested'
Delete subvolume (no-commit): '/home/hartan/btrfs-snapshot-test/demo'
Delete subvolume (no-commit): '/home/hartan/btrfs-snapshot-test/demo-nested'
$ sudo umount backup-drive
$ cd ..
$ rm -rf btrfs-snapshot-test/

基于 Btrfs 備份最后思考

如果你決定使用 Btrfs 來執(zhí)行數(shù)據(jù)的定期備份,那么你可能需要使用一個(gè)工具來自動(dòng)完成這項(xiàng)任務(wù)。Btrfs 維基有一個(gè)專門針對 Btrfs [4] 的備份工具列表。在那里,你還將看到另一個(gè)手動(dòng)執(zhí)行 Btrfs 備份步驟的摘要。就我個(gè)人而言,我對 btrbk [5] 有很多很好的體驗(yàn),我正在使用它來執(zhí)行我自己的備份。除了備份之外,btrbk 還可以在你的 PC 本地保存 Btrfs 快照列表。我使用它來防止意外的數(shù)據(jù)刪除。

如果你想要了解更多有關(guān)使用 Btrfs 進(jìn)行備份的內(nèi)容,歡迎在下面評論,我會(huì)考慮寫一篇專門討論這個(gè)話題的后續(xù)文章。

總結(jié)

本文研究了 Btrfs 快照,它們本質(zhì)上是 Btrfs 子卷。你了解了如何創(chuàng)建可讀寫和只讀快照,以及這種機(jī)制如何有助于防止數(shù)據(jù)丟失。

本系列的后續(xù)文章將討論:

  • 壓縮 - 透明地節(jié)省存儲(chǔ)空間
  • 配額組 - 限制文件系統(tǒng)大小
  • RAID - 替代 mdadm 配置

如果你還想了解與 Btrfs 相關(guān)的其他主題,請查看 Btrfs 維基 [2:1] 和文檔 [1:1]。不要忘記查看本系列的前兩篇文章!如果你認(rèn)為本文缺少了一些內(nèi)容,請?jiān)谙旅娴脑u論中告訴我們。再會(huì)!

參考資料

  1. https://btrfs.readthedocs.io/en/latest/Introduction.html ?? ??
  2. https://btrfs.wiki.kernel.org/index.php/Main_Page ?? ??
  3. https://btrfs.readthedocs.io/en/latest/Subvolumes.html ??
  4. https://btrfs.wiki.kernel.org/index.php/Incremental_Backup#Available_Backup_Tools ??
  5. https://github.com/digint/btrbk ??
責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-10-20 13:12:10

Btrfs壓縮

2020-09-27 10:06:16

Btrfs增量備份

2023-10-04 09:44:56

Btrfs子卷

2023-09-14 09:54:01

Btrfs文件系統(tǒng)

2023-10-09 16:17:11

BtrfsLinux

2021-05-31 06:10:14

Btrfs文件系統(tǒng)Linux

2015-10-10 16:41:09

曙光存儲(chǔ)快照

2009-12-14 13:14:57

2020-07-27 17:32:21

Fedora 33FedoraBtrfs

2014-03-31 10:25:41

FacebookBtrfs文件系統(tǒng)

2009-08-22 21:14:12

VMware Work

2011-08-10 09:25:16

BtrfsFedora 16

2021-01-23 14:00:15

BtrfsLVM-ext4Fedora

2014-03-20 15:59:11

OpenSUSE 13Btrfs文件系統(tǒng)

2009-08-27 12:00:45

ibmdwLinux

2021-05-27 15:03:01

Fedora ClouBtrfs文件系統(tǒng)

2020-12-28 12:28:24

Linux 5.10Btrfs文件系統(tǒng)

2022-05-11 17:21:05

Btrfs文件系統(tǒng)Fedora

2009-09-04 08:12:19

VMware快照功能

2011-05-24 10:24:29

創(chuàng)建與使用VMware
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號