동일한 대상 폴더에 계속 동기화하고 싶은 소스 폴더가 두 개 있습니다. 나는 보통 두 가지 별도의 명령을 내립니다.
rsync -auP --delete-before "/source1/" "/detination/"
rsync -auP --delete-before "/source2/" "/detination/"
그러나 두 번째 명령을 내리면 source1
해당 옵션으로 인해 복사된 파일은 당연히 존재하지 않으므로 source2
삭제됩니다 --delete-before
.
두 소스의 1:1 복사본을 동일한 대상에 동기화하는 방법을 알고 계십니까? 나는 이 문제를 해결하기 위해 다음과 같이 할 수 있다는 것을 알고 있습니다.
rsync -auP --delete-before "/source1/" "/detination/source1/"
rsync -auP --delete-before "/source2/" "/detination/source2/"
하지만 이전에 언급한 결과를 계속 얻을 수 있는지 확인하고 싶었습니다.
답변1
Rsync에는 기록이 없습니다. "treeA처럼 보이게 만들되, treeB에 존재하는 파일은 삭제하지 마세요"라고 자동으로 말하는 방법은 없습니다.
귀하의 질문에서는 트리의 1:1 복사본을 요구하지만 병합된 복사본을 원하는 것 같습니다.
다음과 같이 좀 더 복잡한 작업을 수행할 수 있습니다.
- rsync treeB 및 전송된 모든 파일 기록(-i 사용)
- 파일 이름만 포함된 목록으로 파일을 사후 처리하여 전송했습니다.
- rsync treeA 및 이전의 모든 파일 제외
이제 두 파일 모두에 파일이 있으면 treeB 복사본이 됩니다. 파일이 하나에만 존재하는 경우 해당 디렉토리에 위치합니다. 단점은 treeA에만 있는 모든 파일이 지속적으로 삭제되고 실행될 때마다 다시 복사된다는 것입니다.