블록 장치를 동기화하기 위해 rsync와 비슷한 것이 있습니까?

블록 장치를 동기화하기 위해 rsync와 비슷한 것이 있습니까?

여러 개의 32Gb 펜 드라이브를 복제하고 dd를 사용하여 Linux 시스템을 설치했습니다. 나중에 파티션을 축소하고 ("마스터"에서) 몇 가지 변경 사항을 적용했습니다. dd를 사용한 느린 전체 재복제를 피하기 위해 변경된 블록만 전송하는 도구가 있습니까?

생각해봤는데 rsync파일로만 작동하는 것 같더라고요.

답변1

일부 rsync 버전에는 이 기능이 있습니다(배포판에 따라 다름). Distro에는 일반적으로 rsync용 패치가 2개 있습니다. 하나는 블록 장치에서 읽기 위한 것이고(플래그 제공 --copy-devices), 다른 하나는 블록 장치에 쓰기 위한 것입니다(플래그 제공 --write-devices). 그러나 이러한 방식으로도 rsync를 사용하려면 몇 가지 추가 플래그와 주의 사항이 필요합니다.

명령을 살펴보고 분석해 보겠습니다.

rsync -I --copy-devices --write-devices --no-whole-file --inplace \
  "$(readlink -f "/dev/vg_src/lv_src")" "$(readlink -f "/dev/vg_dst/lv_dst")"

이는 -Irsync가 블록 장치 내용보다는 블록 장치 파일(장치를 나타내는 파일 시스템 항목)의 타임스탬프와 크기를 확인하여 동기화를 건너뛸 수 있기 때문입니다. 이 플래그는 rsync가 블록 장치의 내용을 평가하도록 강제합니다.

--copy-devices파일이 아닌 소스 블록 장치의 내용에서 동기화하도록 rsync에 지시합니다 /dev.

--write-devices파일을 교체하는 대신 대상 블록 장치의 내용을 동기화하도록 rsync에 지시합니다 /dev.

--no-whole-file변경된 블록만 전송하도록 rsync에 지시합니다 . 필요한 경우 블록 크기를 제어할 수 있습니다 --block-size.

--inplace임시 파일을 생성하고 이름을 바꾸는 대신 대상 블록 장치를 업데이트하도록 rsync에 지시합니다 .

이러한 $(readlink ...)호출은 rsync가 일반적으로 경로를 살펴보고 해당 경로가 심볼릭 링크인지 확인하고 이를 블록 장치로 인식하지 않기 때문에 이루어집니다. 따라서 readlink심볼릭 링크는 역참조됩니다.

답변2

현재 다음 rsync과 같은 복제 장치가 지원됩니다.

rsync --copy-devices --write-devices <FROM> <TO>

실제 장치 노드를 찾은 경우에만 장치에 씁니다. 따라서 /dev/mapper/<VG>-<LV>심볼릭 링크를 소스 장치의 내용이 포함된 파일로만 대체(시도)하므로 대상 으로 사용하지 마십시오 .

[옵션 중 하나가 --*link*이러한 심볼릭 링크를 따르도록 지시할 수 있지만 저는 그냥 /dev/dm-<NN>. ]

답변3

설명에 따르면:BSCPSSH 연결을 통해 단일 파일 또는 블록 장치를 복사하고 변경된 부분만 전송합니다.

답변4

비슷한 대안은디스크 동기화블록 중복 제거(및 선택적 백업 압축)를 수행하는 go 코드인 가 ssh전송으로 사용됩니다. 안정적인 소스 이미지(머클 트리 및 해시로 인해)가 필요하며 이는 일반적으로 스냅샷을 사용하여 보장됩니다.

기본적인 사용법은 아주 간단합니다

diskrsync --verbose --no-compress /dev/vg0/lv_snap ruser@otherhost:/dev/sdd7

diskrsync별도의 설치 없이 바로 사용이 가능하며, 쌍방의 집에 놓아두기만 하면 사용이 가능합니다.

./diskrsync …

압축은 대상에 압축된 백업을 유지하거나스푸즈로컬 장치로 추출하십시오.

관련 정보