다른 마운트 된 스냅 샷은 작동하지만 대부분의 경우 속도가 느려질 수 있습니다.
Diffing Snapshot에 대한 btrfs 관련 기능이 있습니까? (문서에서 찾을 수 없습니다)
답변
btrfs send / receive를 찾고 있는 것 같습니다 .Linux 3.6에 나타납니다. 이 send
명령은 두 스냅 샷 간의 차이점에 대한 로그 파일을 작성하고 파일의 receive
변경 사항을 적용합니다. 보내기 / 받기는 사용자 정의 파일 형식을 사용하므로 diff 또는 tar와 같이 파일이 정확하게 표시되지 않습니다.
답변
나는 가지고 있지 않은 데비안 안정을 실행 btrfs send
중이므로를 사용하는 솔루션을 찾았습니다 btrfs subvolume find-new
.
snapshot1과 snapshot2가 있고 나중의 Snapshot 2에서 변경된 사항을 알고 싶은 경우 snapshot1이 작성되었으므로 아래 스크립트를 사용할 수 있습니다.
btrfs-diff oldsnapshot/ newsnapshot/
oldsnapshot / 이후에 newsnapshot /에서 변경된 모든 파일을 나열합니다.
#!/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와 라이브 하위 볼륨간에 어떤 변화가 있습니까?
$ btrfs-diff snap2/ live/
foo3
이름이 바뀐 파일은보고되지 않습니다 . 데이터가 변경되지 않았습니다.
이름을 바꾼 파일에 데이터를 추가하면 어떻게됩니까?
date >>live/bar2
btrfs-diff snap2/ live/
bar2
foo3
알겠습니다. 하지만 새 파일을 만들어 봅시다
date >live/lala
btrfs-diff snap2/ live/
bar2
foo3
뭐라고! 라라 어 where 어? . 다른 파일을 추가하면가 lala
나타납니다. 따라서이 동작은 약간 이상합니다. 아마도 위키가 말하는 이유는 다음과 같습니다.
새로 찾기 접근 방식에는 몇 가지 심각한 제한이 있으므로 보내기 / 받기와 같은 작업에는 실제로 사용할 수 없습니다.
그러나 (읽기 전용) 스냅 샷을 비교할 때가 아니라 라이브 하위 볼륨을 이전 상태와 비교할 때 문제가 발생합니다. 따라서 삭제 된 파일을 식별하지 않는 한 여전히 유용 할 수 있습니다.
답변
이것은 스냅 샷 편의 도구에 의해 지원됩니다 snapper
.
sudo snapper -c config diff 445..446
물론이를 위해서는 snapper
스냅 샷에 사용해야합니다 .
이 스냅 샷 ID는을 사용하여 찾을 수 있습니다 snapper list -a
. 불행히도 snapper 작성 당시에는 단일 구성에 대한 목록 스냅 샷을 지원하지 않았지만이 숫자는 하위 볼륨 이름에서 찾을 수 있습니다.