기본 백업에 사용하는 명령은 rsync -avr --delete working_directory/ backup/
내 디렉터리의 미러를 올바르게 생성합니다.
그러나 때로는 소스에서 많은 수의 파일을 이동할 때가 있습니다. 예를 들어, a/를 A/로, b/를 B/로 이름을 바꾸세요. 이 경우 명령은 먼저 대상 a/를 삭제한 다음 전체 A/를 복사합니다.
a/가 크면 이는 성가신 일입니다. 단순히 소스와 일치하도록 대상의 파일을 이동하는 보다 효율적인 솔루션을 적용할 수 있는 방법이 있습니까?
rsync 기반일 필요는 없습니다. 모든 CLI 도구가 가능합니다.
답변1
rsync가 REPLICA/a가 MASTER/A의 "변형"임을 알 수 있는 "지능형" 방법은 없습니다.
이러한 유형의 중복을 최소화하는 유일한 방법은 다음과 같습니다.수행된 이름 변경 작업 추적(mv 인스턴스의 기록을 검색합니다.) 그런 다음 다음 명령을 복사합니다(수동으로?)를 REPLICA 아래의 해당 디렉터리에 추가한 다음 일반 rsync 작업을 수행하면 순수 델타만 복사됩니다.
문제는,파일 시스템 유형이 양쪽 끝에서 동일하다고 가정, REPLICA inode 테이블은 MASTER inode 테이블과 다르기 때문에 다른 장치에서 이름이 변경되었을 수 있는 inode와 일치할 수 없습니다. 불행하게도 이 문제를 해결할 수 있는 방법이 없습니다.
이를 직접 구현할 수 있는 유일한 방법은 rsync가 실제로 inode 대응에 대해 inode 맵(파일별 기준)을 추적하는 것입니다. 그러나 제 생각에는 장치마다 파일 시스템마다 다른 inode 테이블 구조가 있기 때문에 이 문제는 고려하거나 추구하기에는 너무 복잡합니다.