虽然区分装载的快照将起作用,但听起来在很多情况下可能会非常慢。
有btrfs特定function差异快照? (我无法find任何文档)
这听起来像你正在寻找Btrfs发送/接收 ,这将出现在Linux 3.6。 send
命令创build两个快照之间差异的日志文件, receive
命令应用文件中的更改。 请注意,发送/接收使用自定义文件格式,所以文件看起来不会像diff或tar那样。
我正在运行没有btrfs send
Debian stable,所以我使用btrfs subvolume find-new
查找了一个解决scheme。
如果你有快照1和快照2,并且你想知道在快照1和快照2中发生了什么变化,那么你可以使用下面提供的脚本
btrfs-diff oldsnapshot/ newsnapshot/
它将列出在新闻快照/自oldsnapshot /中更改的所有文件。
#!/bin/bash usage() { echo $@ >2; echo "Usage: $0 <older-snapshot> <newer-snapshot>" >2; exit 1; } [ $# -eq 2 ] || usage "Incorrect invocation"; SNAPSHOT_OLD=$1; SNAPSHOT_NEW=$2; [ -d $SNAPSHOT_OLD ] || usage "$SNAPSHOT_OLD does not exist"; [ -d $SNAPSHOT_NEW ] || usage "$SNAPSHOT_NEW does not exist"; OLD_TRANSID=`btrfs subvolume find-new "$SNAPSHOT_OLD" 9999999` OLD_TRANSID=${OLD_TRANSID#transid marker was } [ -n "$OLD_TRANSID" -a "$OLD_TRANSID" -gt 0 ] || usage "Failed to find generation for $SNAPSHOT_NEW" btrfs subvolume find-new "$SNAPSHOT_NEW" $OLD_TRANSID | sed '$d' | cut -f17- -d' ' | sort | uniq
解释: btrfs subvolume find-new
查找在特定的“快照生成” 后更改的文件。 它也报告当代的人数。
例如,拍摄一个子卷的每日快照:
mkdir test && cd test btrfs subvolume create live date >live/foo1 date >live/bar1 btrfs subvolume snapshot live/ snap1 date >live/foo2 # new file date >>live/bar1 # modify file rm live/foo1 # delete file btrfs subvolume snapshot live/ snap2 date >live/foo3 # new file mv live/bar{1,2} # rename file rm live/foo2 # delete file
snap1和snap2之间有什么变化?
$ btrfs-diff snap1/ snap2/ bar1 foo2
所以我们可以看到新文件,看到修改过的文件, 但是删除不会被报告 。 这是因为命令报告存在的文件,而不是现在不存在的文件。
snap2和live子卷之间有什么变化?
$ btrfs-diff snap2/ live/ foo3
重命名的文件不被报告 。 它的数据没有改变。
现在,如果我们将数据添加到重命名的文件
date >>live/bar2 btrfs-diff snap2/ live/ bar2 foo3
好,有道理。 但是,我们来创build一个新文件
date >live/lala btrfs-diff snap2/ live/ bar2 foo3
诶! 拉拉在哪里? 。 如果添加另一个文件,则会出现lala
。 所以这种行为有点奇怪。 这可能是为什么维基说:
发现新的方法有一些严重的限制,因此不能用于发送/接收之类的东西。
但是,如果比较实时子卷和以前的状态,而不是比较(只读)快照,则会出现奇怪现象。 所以这可能仍然是有用的,除非你也想识别删除的文件。
快照便捷工具snapper
支持此function。
sudo snapper -c config diff 445..446
当然,这需要你使用快照来snapper
你的快照。
这个快照ID可以使用snapper list -a
来find。 不幸的是,在写这篇文章时,笛笛不支持单个configuration的列表快照,尽pipe这些数字可以从子卷名中find。