다른 마운트 된 스냅 샷은 작동하지만 대부분의 경우 속도가 느려질 수 있습니다.
Diffing Snapshot에 대한 btrfs 관련 기능이 있습니까? (문서에서 찾을 수 없습니다)
다른 마운트 된 스냅 샷은 작동하지만 대부분의 경우 속도가 느려질 수 있습니다.
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
나타납니다. 따라서이 동작은 약간 이상합니다. 아마도 위키가 말하는 이유는 다음과 같습니다.
새로 찾기 접근 방식에는 몇 가지 심각한 제한이 있으므로 보내기 / 받기와 같은 작업에는 실제로 사용할 수 없습니다.
그러나 (읽기 전용) 스냅 샷을 비교할 때가 아니라 라이브 하위 볼륨을 이전 상태와 비교할 때 문제가 발생합니다. 따라서 삭제 된 파일을 식별하지 않는 한 여전히 유용 할 수 있습니다.
A
포함 된 파일 을 스냅 샷에a
작성한b
후 나중에로 다시 변경a
하면 파일이 전혀 변경되지 않았습니다.