rsync dir-merge는 로컬 및 원격 필터의 영향을 받습니다.

rsync dir-merge는 로컬 및 원격 필터의 영향을 받습니다.

웹 서버에 파일을 업로드하기 위해 --delete와 함께 rsync를 사용하고 있습니다. 구성 파일이기 때문에 제외하고 싶은 파일이 있습니다. 구성/특수 파일을 제외하기 위해 디렉터리 전체에 .rsync-filter 파일을 분산시킬 수 있도록 "dir-merge" 필터를 사용하고 있습니다.

이게 간단한 것 같지만,나한테 문제가 생겼어!

많은 조사 끝에 내 문제는 .rsync-filter를 사용하여 로컬에서 파일을 제외하면 파일이 여전히 원격으로 삭제된다는 것입니다.~하지 않는 한리모콘에 해당 .rsync-filter가 이미 있습니다.

이것이 실제로 의미하는 바는 파일을 제외하기 위해 .rsync-filter(로컬)를 생성하면 rsync가 여전히 원격에서 파일을 삭제한다는 것입니다. 하지만 .rsync-filter도 리모콘에 복사하므로 다음에 시도할 때는할 것이다올바르게 제외하세요.

그래서 내 질문은 (약간 광범위함)입니다. 맞습니까? 매뉴얼 페이지에서 이에 대한 언급은 어디에 있습니까? 이 모든 것이 나에게는 약간 반직관적인 것 같습니다!

아, 그리고 그렇다면 "e"merge|dir-merge 수정자는 무엇을 합니까? ("e" 한정자는 병합된 파일을 전송에서 제외합니다). 확실히 "e" 수정자를 사용하면 rsync가 예상한 대로 작동하지 않을 가능성이 높아집니다.

답변1

내 질문에 대한 답변으로 rsync가 어떻게 작동하는지 이해할 수 없습니다!

기본적으로 로컬 rsync가 모든 것을 실행한다고 생각합니다. 무엇을 삭제할지 결정하는 수신자를 제외한 모든 작업을 대부분 수행합니다. 이에 대한 부작용은 디렉터리별로 병합된 파일을 사용하는 경우 병합된 파일 자체가 업로드될 때까지 수신자가 이러한 사실을 알 수 없다는 것입니다.

내 초기 생각은 먼저 rsync를 실행하는 것이 었습니다.아니요삭제하고 병합된 파일을 동기화한 다음 rsync를 다시 실행하세요.그리고제대로 작동하는지 확인하려면 제거하세요. 그러나 --delete-after문제를 해결하는 것으로 나타났습니다 .

저를 혼란스럽게 하는 또 다른 점은 이 기능을 사용하면 제외된 파일이 계속 제거된다는 것입니다. --delete-after왜냐하면 --dry-run이는 연습 실행이고 수신자는 여전히 동기화되지 않은 병합된 파일의 필터링 규칙을 (지금까지) 알지 못하기 때문입니다.

마지막으로 dir-merge의 "e" 수정자는 병합된 파일의 업로드를 제외하므로 --delete!

답변2

이러한 파일을 제외하고 싶지 않고 보호하고 싶을 것입니다. 즉, 사용되지 - filename는 않았지만 사용되었습니다 P filename.

관련 정보