我认为我很难完全理解子卷和快照。/home 分区是 btrfs。我想创建 /home/user 的“备份”快照(例如),但用户已经存在多年(以前是 ext4 > btrfs-convert)。我相信您只能创建子卷的快照。我检查过,没有“默认”子卷存在。
1)除了创建子卷 /home/user2 并将所有内容从 user 复制到 user2 以对其进行快照之外,还有其他方法可以备份 /home/user 吗?
答案1
如果您想要备份 /home/user,那么对整个 /home 进行快照是完全合理的。快照相对便宜。
btrfs snapshot create /home/ /home/snapshot
在 Btrfs 中,快照的基本单位是子卷(/mount-point/ 自动为子卷),您无法快照任何更小的内容。在这种情况下,您的 /home 是您可以快照的最小内容。您可能永远不会遇到快照整个 /home 的问题,如果有一天您遇到了,那么您创建子卷并复制到其中的方法也将有效。到那时,btrfs 很有可能能够创建普通旧目录的快照。
答案2
您可以在备份目录中创建指向 /home/user 下所有内容的 reflink,这与快照非常相似。例如,您可以运行类似 的命令cp -rax --reflink /home/user /backup/home/user
。(/home/user
和都/backup/home/user
需要位于同一个 btrfs 卷上。)这将复制目录结构和 inode(元数据),但 inode 将指向与原始文件相同的范围(包含实际文件内容)。由于未复制实际文件内容,因此这比实际复制完整文件占用的磁盘空间更少,运行速度更快。当原始文件发生变化时,新数据将写入新范围,因此备份仍将包含旧数据。