Skip to content

Commit d8cd6f1

Browse files
committed
ops/filesystem: tip about top-level -> @ with snapshot
1 parent 618d16b commit d8cd6f1

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

docs/ops/storage/filesystem.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ $ sudo btrfs subvolume get-default /media/btrfs
777777
ID 259 gen 11 top level 256 path subvol1/nestedvol1
778778
$ sudo umount /media/btrfs
779779
$ # 重新挂载文件系统,可以看到挂载的 subvolume 已经改变
780-
$ sudo mount btrfs.img /media/btrfs
780+
$ sudo mount btrfs.img /media/btrfs
781781
$ sudo btrfs subvolume show /media/btrfs
782782
subvol1/nestedvol1
783783
Name: nestedvol1
@@ -841,6 +841,22 @@ $ sudo umount /media/btrfs
841841

842842
我们可以定时执行快照,以便在文件被误操作时能够恢复。例如 snapper 等软件可以在后台自动执行快照任务。
843843

844+
!!! tip "使用快照将 top-level subvolume 的文件迁移到 `@` 或其他 subvolume"
845+
846+
如果你在配置系统时直接在 top-level subvolume 下安装了系统,或者需要处理使用 [`btrfs-convert`](#btrfs-convert) 转换得到的 Btrfs,那么根据上面所描述的快照的原理,可以比较方便地迁移,而不需要再手动复制或移动:
847+
848+
```shell
849+
# 假设 top-level subvolume 在 /mnt
850+
mount -o subvolid=5 /dev/your-device /mnt
851+
btrfs subvolume snapshot /mnt /mnt/@
852+
# 如果有其他的 subvolume,删除空目录
853+
rmdir /mnt/@/@example
854+
# 删除 top-level subvolume 的文件
855+
rm -rf /mnt/example_file /mnt/example_dir
856+
```
857+
858+
当然,如果是根分区要这么处理,那么可能无法在线处理(不能现场更换某个挂载点对应的 subvolume),需要引导到其他环境再挂载操作。
859+
844860
#### 传输 {#btrfs-send}
845861

846862
Btrfs 支持文件系统层面的流式发送和接收,允许以字节流的形式将一个**只读** subvolume(以下简称快照)的内容拷贝到另一个文件系统上,比如下面这样:

0 commit comments

Comments
 (0)