모바일 Rsync의 올바른 처리

모바일 Rsync의 올바른 처리

성공적으로 사용했습니다동기화내 노트북과 넷북 사이의 홈 디렉토리를 동기화합니다(둘 다 Linux에서 ext4 사용). 내 유일한 문제는 때때로 특정 디렉토리를 완전히 재구성하고 싶다는 것입니다.동기화이것을 새 파일을 삭제하고 생성하는 것으로 생각하면 매우 느리고 비효율적입니다.

파일 이동을 잘 처리하는 소프트웨어를 아는 사람이 있습니까?

내가 찾은일관된할 수 있어야 하는데 실제로는 안되는 것 같습니다. 나는 테스트했다일관된각 디렉토리에 큰 파일이 있는 두 개의 로컬 디렉토리를 동기화함으로써 내 이동이 삭제 + 생성임을 감지하고 실제로는동기화.

그리고 내 기억이 맞다면일관된몇 달 전의 소스 코드에서는 sha sum과 같은 작업을 시도하지만 이상적인 솔루션이 sha sum을 수행하는 것을 원하지 않습니다. 대용량 파일/디렉토리의 경우 너무 느립니다. 나는 다음과 같은 것을 알아차리는 것을 원합니다.

"이 파일의 마지막 소스 대응 부분이 삭제된 것으로 보이며 소스 디렉터리 트리의 다른 곳에 동일한 mdate, 크기 및 inode 번호를 가진 새 파일이 있으므로 이것이 이동이라고 가정하고 대상을 이동합니다. 삭제+복사를 수행하는 대신 그에 따라 복사하세요."

이러한 컴퓨터를 신속하게 동기화할 수 있다는 것은 나에게 중요합니다.

어떤 제안이 있으십니까?

답변1

너는 좀 봐야 해rdiff 백업내부적으로는 이를 rsync수행하지만 필요한 추가 지능을 제공합니다(증분 백업을 롤백할 수 있지만 비활성화되도록 구성할 수 있음).

최신 버전은 오래된 버전(2009)이지만 이는 안정성을 의미합니다.

답변2

Unison은 원하는 것을 할 수 있지만 원격으로만 가능합니다. ssh://localhost/path/to/dir뿌리 중 하나로 사용해 보세요 .

Unison은 파일 내용을 기반으로 결정을 내리지만 inode 번호를 추적하지는 않습니다.

답변3

소스 및 대상 디렉터리의 파일 시스템이 하드 링크를 지원하는 경우 rsync를 사용하여 이동되고 이름이 바뀐 파일을 처리할 수 있습니다. 아이디어는 실제로 하드 링크를 전송하기 전에 rsync가 하드 링크를 다시 작성하도록 하는 것입니다. 좋은 설명을 찾을 수 있습니다여기

우리는 소스/대상 디렉토리에 하드 링크의 숨겨진 트리를 생성하는 간단한 솔루션으로 끝났습니다. 기본 스크립트는 다음과 같습니다.

# Name of hidden directory
Shadow=".rsync_shadow"

# do real sync
rsync -ahHv --stats --no-inc-recursive --delete --delete-after "$Source"/ "$Target"

# update/create hidden dir of hard links in source
rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"

# update/create hidden dir of hard links in target
rsync -a --delete --link-dest="$Target" --exclude="/$Shadow" "$Target"/ "$Target/$Shadow"

샘플 스크립트가 있습니다GitHub. 하지만 프로덕션에서 이 방법을 사용하기 전에 광범위한 테스트를 수행하는 것이 좋습니다.

답변4

질문은 오래되었지만 관련이 있습니다.

이것은 당신이 찾고 있는 도구입니다: 재동기화 도우미

이는 3가지 유형의 변경 사항을 동기화합니다.

  1. 파일 수정 타임스탬프 변경(Exiftool을 사용하여 사진의 타임스탬프를 일괄 변경하는 경우)
  2. 파일/디렉토리 이름 바꾸기
  3. 한 디렉터리에서 다른 디렉터리로 파일 이동

실행되도록 설계되었습니다.앞으로rsync가 이미 실행 중입니다.

면책 조항: 저는 위 도구의 작성자입니다.

관련 정보