이진 기반 폴더 비교 두 동기화 디렉토리를 생성하는 방법은 무엇입니까?


1

Java 기반 소프트웨어의 릴리스를 생성 해야하는 간단한 시나리오가 있습니다. 내가 수동으로 한 일은 다음과 같습니다.

1- 소프트웨어 빌드 2- "릴리스 디렉토리"에 필요한 모든 파일 복사 3- 파일 압축

이제 CI (jenkins)를 추가하여 빌드를 만들었습니다. 그런 다음 rsync를 사용하여 기본 설치 디렉토리 (마지막 빌드 포함)를 업데이트했습니다. RSYNC의 문제점은 타임 스탬프를 사용한다는 것입니다. 방금 새 버전을 만들었으므로 모든 타임 스탬프가 변경되었습니다. 바이너리 모드에서 파일을 비교하기 위해 할 수있는 일이 있습니까?

편집하다

이것이 내가 한 일입니다. 현재 src1과 src2는 같습니다. 유일한 차이점은 src2가 src1의 사본이므로 시간 소인입니다. 그런 다음 rsync는 모든 파일을 dst에 복사합니다. 나는 dst가 비어있을 것으로 기대했다.

rsync -av --progress --stats --compare-dest = .. / src1 / src2 / dst /

그래서 나는 다음을 시도했다. 동일한 타임 스탬프로 src1의 사본을 생성했으며 동일한 명령을 실행할 때 dst가 비어 있습니다. rsync가 타임 스탬프를 사용한다고 믿었습니다.

답변:


3

옵션을 사용해야합니다. 그렇지 않으면 기본값은 빠른 타임 스탬프 및 크기 비교입니다.

-체크섬


이 일을 할 수 있었습니까? 나는 동일한 유스 케이스를 가지고 있으며 사용하는 --checksum것도 도움이되지 않습니다. 새 빌드에 필요한 모든 파일을 가져오고 있습니다.
ronakg

1

rsync는 파일을 이진 모드로 효과적으로 비교하며 이진 내용의 차이가 발견 된 경우에만 내용을 전송합니다.

내가 이해하는 것처럼 수정 시간 및 크기 검사는 비교할 파일을 선택하는 데 사용됩니다.

rsync는 --size-only옵션이 있습니다


게시물을 약간 수정했습니다. rsync가 파일을 비교한다는 것을 읽었지만 타임 스탬프 차이가 새로운 사본을 보내기에 충분하다고 생각합니다. 이진 비교를 강제하고 싶습니다.
code-gijoe

rsync가 로컬 복사본에 대한 바이트 범위 비교를 수행하지 않습니까? 당신이 그것에 대해 생각할 때, 파일을 체크섬하려면 파일을 완전히 읽습니다. 사본을 작성하려면 하나를 완전히 읽고 완전히 써야합니다. 얻을 것이 많지 않을 수 있습니까?
RedGrittyBrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.