首页
学习
活动
专区
圈层
工具
发布

btrfs快照
EN

Unix & Linux用户
提问于 2018-02-07 19:26:52
回答 1查看 962关注 0票数 2

在我的debian系统上,我使用用btrfs格式化的hdds进行备份。大量的数据是我的音乐和照片收集,所以它往往是相对稳定的,只有增长。

我在/media/backup中挂载btrfs卷,然后我有一个子目录备份,并在其中包含了用于进行各种备份的目录。做完夜间备份之后,我就会做一个快照。

DATE=$(日期+"%Y%m%d_%H%M") btrfs子卷快照/媒体/备份/媒体/备份/$DATE

对于第一天,这是预期的,但是第二天,快照也包含第一天的快照,快照的第二天包含第一次快照,等等。

如果我正确地理解了当我做btrfs快照时会发生什么,这没有实际意义,磁盘空间的使用是绝对有限的,但是由于它看起来有点混乱,我想避免它。我的第一个想法是做一个/media/backup/backup的快照以避免这种情况,但是当我试图创建一个目录的快照而不是一个卷时,这当然是行不通的。

是否有任何方法可以使相同卷的快照数量,并避免让更新的快照也指向所有旧的快照?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-07 20:22:18

首先,如果您查看最近的快照,您将注意到来自前一个快照的目录不包含新快照中的任何实际数据,因此它不仅仅是边缘磁盘使用,它是零额外的。

现在,要避免它们,唯一的方法是将快照存储在快照进程未涵盖的地方。对于这一点,您实际上有两个选项:

  1. 为您正在快照的子卷中的快照创建一个专用的子卷。快照停留在子卷边界(这是它们不存储现有快照副本的原因),所以快照中没有任何一个,只是快照子卷的一个空目录。这可能是现在采用的最简单的选项,因为它只需要使用btrfs subvolume create创建子卷并将快照创建脚本指向那里,以便存储快照。就其价值而言,.snapshots似乎是这种方法的一个事实上的标准名称。使用此选项几天后,目录树的外观大致如下: /media/backups /media/backups/. /media/backups /backups/.快照/20180207_1342/media/backups/.快照/20180209_0415/media/backups/.快照/20180312_1754所有非快照数据都在/media/backups/.snapshots中,所有单个快照都存储在D5中。每个快照中都有一个空的.snapshots目录。
  2. 不要使用BTRFS卷的根子卷,而是将所有实际数据放在它自己的子卷中,并在快照之外放置快照。这种方法不太容易转换,很可能要求您更新的不仅仅是快照命令,而且还可以使一次性回滚整个快照变得更容易。使用此方法进行几次快照后,您的目录树看起来会如下所示: /media/backups/current /media/backups/20180207_1342 /media/backups/20180209_0415 /media/backups/20180312_1754 --您的所有数据都存储在/media/backups/current中(它需要是一个BTRFS子卷,就像.snapshots对第一个方法所做的那样),并且您的快照位于/media/backups下面。只需删除current子卷并创建要还原的快照的可写快照current,就可以轻松地还原整个快照。

现在,对于你所说的不是你问题的直接部分,我还想提出另外两点:

  1. 列出的命令将创建可写快照。如果这里的目的是维护收藏的存档副本,那么这几乎肯定不是您想要的,所以我建议在选项中添加-r,使快照成为只读的。在需要修改一个文件的情况下(例如,如果需要从集合中彻底清除一个文件),仍然可以使用btrfs property set命令在快照上切换只读标志。
  2. 虽然在技术上不是一个重要的问题,但时间戳格式有些不常规,因此,如果您试图使用其他工具处理这些快照,或者如果您需要共享这些数据,则可能会使其他人感到困惑。鉴于此,我建议使用‘%FT%T’,这将给您一个ISO 8601时间戳,应该被所有软件解析,并立即为大多数人识别,同时仍然提供合理的词法排序快照。
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/422635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档