"부모"와 "복제 소스", "btrfs 보내기"의 차이점은 무엇입니까?

"부모"와 "복제 소스", "btrfs 보내기"의 차이점은 무엇입니까?

나는 라이브 시스템에서 백업 드라이브로 읽기 전용 스냅샷을 자주 사용 btrfs send하고 복사합니다. btrfs receive백업 드라이브에 이미 여러 개의 스냅샷이 있습니다. 오늘 궁금했던 점: 여러 이전 스냅샷에서 오늘의 여러 스냅샷을 증분 업데이트로 복사할 수 있나요?즉시?

최근에 나는 그랬다

btrfs send -p  home_old  home_today | btrfs receive /mnt/backup/
btrfs send -p share_old share_today | btrfs receive /mnt/backup/

이거 1개의 명령어로 통일할 수 있나요?

그래서 내가 조사했어man btrfs-send그리고 읽어보세요:

증분 모드(옵션 -p 및 -c)에서는 전송자와 수신자 모두가 사용할 수 있는 이전에 전송된 스냅샷을 사용하여 전송된 스냅샷을 다른 파일 시스템에서 재구성하기 위해 전송해야 하는 정보의 양을 줄일 수 있습니다.

이것이 내가 원하는거야.

-p <부모>

상위 볼륨에서 하위 볼륨으로 델타 스트림 보내기

-c <클론 소스>

이 스냅샷을 델타 전송의 복제 소스로 사용(여러 개 허용)

그 중 하나만이 기존의 여러 스냅샷을 -p지원하는 것 같은데 -c, 둘 사이의 차이점을 이해하지 못합니다. 차이점은 무엇입니까?

답변1

여기그것은 말한다-피btrfs-send는 먼저 상위 및 하위 볼륨의 스냅샷을 생성한 다음 btrfs-send의 데이터 흐름에 따라 그에 따라 스냅샷을 수정합니다. 그리고-씨btrfs-receive 옵션은 빈 하위 볼륨을 생성하고 수정하여 변경되지 않은 파일에 대한 참조 링크를 생성합니다. 차이점은 btrfs-send가 전송해야 하는 메타데이터의 크기입니다. 의 경우-씨옵션모두다음과 같은 경우 메타데이터가 전송됩니다.-피옵션 -일부메타데이터.

하위 볼륨(250G, 310k 파일)의 스냅샷을 사용하여 이를 테스트했으며 결과는 다음과 같습니다.

# time btrfs send -p server-20181031-1746 server-20181225-1144 -f /mnt/parent.diff
At subvol server-20181225-1144

real    3m12,618s

Parent.diff의 크기는 6418364996바이트입니다.

# time btrfs send -c server-20181031-1746 server-20181225-1144 -f /mnt/clone.diff
At subvol server-20181225-1144

real    3m17,435s

Parent.diff의 크기는 6418364996바이트입니다.

그래서 제가 아는 한 거의 차이가 없습니다.

btrfs-send가 하나의 명령으로 여러 하위 볼륨에 대한 스트림을 생성할 수 있다고 생각하지 않습니다.

답변2

방금 하나만 썼어요긴 대답또한 옵션, 관련 섹션 복사 및 붙여넣기에 대해 설명합니다 -p.-c

부모는 하나만 가질 수 있습니다

이것매뉴얼 페이지그리고 (늙은)위키 FAQ불행하게도 꽤 혼란스럽습니다. 저자는btrfs-clone 역설btrfs 보내기 및 받기는 기껏해야 고려할 수 있습니다.하나델타 전송의 상위입니다. 상위 항목은 -p하나 이상의 옵션을 통해 -c직접 또는 간접적으로 지정할 수 있습니다.

btrfs-sendbtrfs-tools 4.13에서 하위 볼륨 S의 상위 볼륨과 지정된 복제 소스 세트 C_i를 선택합니다.이와 같이:

  1. 옵션을 지정 하면 -p사용됩니다.
  2. S에 세트가 없거나 parent_uuiduuid를 찾을 수 없으면 포기하세요.
  3. C_i있는 경우 C_i->uuid == S->parent_uuid(S는 하위 볼륨의 하위 볼륨(스냅샷)이므로 "엄마"라고 부르겠습니다)을 사용합니다.
  4. C_i가 S와 동일하지 않으면 parent_uuid포기하세요.
  5. "어머니"의 모든 자녀 C_i 중에서 "어머니"에 가장 가까운 세대를 선택합니다(실제로 , ctransid와 "세대"의 차이점은 무엇인가요?).

알아채다위키피디아위의 알고리즘은 일반적으로 이를 암시하지만, -cwith는 with와 다르다는 것을 암시하므로 약간 오해의 소지가 있습니다 . p관련된 유일한 예외는 상위 볼륨 없이 하위 볼륨을 보내는 것입니다.-c-p-p

요약하자면, 항상 명시적으로 부모를 지정 -p하고 무시하는 것이 좋습니다 -c. btrfs receive"두 부모"라는 개념은 전혀 없습니다.

관련 정보