CD 기반 증분 패치를 통해 두 폴더 동기화

CD 기반 증분 패치를 통해 두 폴더 동기화

매주 업데이트되고 CD를 통해 제공되는 데이터 폴더가 원격 PC에 있습니다.

이 폴더는 대부분 .jar바이너리 파일입니다. 아마도 200개 정도이고 총 크기는 약 350Mb입니다.

매번 데이터의 작은 부분(보통 약 5%)만 변경됩니다.

완전히 새로운 버전의 데이터 폴더를 제공하는 대신 델타를 보내고 싶습니다.

diff이를 수행하는 가장 좋은 방법 은 Linux 명령입니까? 생성되는 패치 파일 크기는 350Mb에 가까운 것으로 보이므로 크기가 절약되지 않습니다.

특정 파일의 변경 사항을 보내는 것에 대해 걱정하지 않고 전체 대체 파일을 보내게 되어 기쁩니다.

이를 수행할 수 있는 다른 적합한 Linux 도구가 있습니까?

답변1

git bundle그것은 잘 작동할 것 같은 종류의 것 같습니다 .

시간이 지남에 따라 저장소의 변경 사항을 나타내는 파일을 생성할 수 있으며, 이를 CD에 기록하여 원격 컴퓨터로 전송할 수 있습니다. 그런 다음 이러한 변경 사항을 원격 위치에 적용할 수 있습니다.

머신 A의 리포지토리 R1에서 머신 B의 다른 리포지토리 R2로 기록을 전송한다고 가정합니다. 어떤 이유로든 A와 B 간의 직접 연결은 허용되지 않지만 일부 메커니즘(CD, 이메일 등)을 통해 가능합니다. 우리는 R1의 마스터 브랜치에서 개발된 내용으로 R2를 업데이트할 수 있기를 바랍니다.

git 번들 문서는 다음과 같습니다.여기

답변2

이 요구 사항을 충족할 수는 있지만 rsync --write-batch=FILE350MB의 콘텐츠만 CD로 보내는 것은 다소 과도한 것 같습니다. (기본적으로 150MB를 보내든 350MB를 보내든 상관없습니다. 그래도 CD가 필요합니다.)

이 방법으로 사용 하려면 rsync들어오는 변경 파일과 비교할 수 있도록 데이터 폴더의 로컬 복사본을 유지 관리해야 합니다. 변경 세트 출력은 FILE원격 PC 대상에 기록된 다음 원격 PC 대상에도 적용될 수 있습니다 rsync --read-batch=FILE.

더 나은 조언은 파일 수정 날짜/시간 및 크기를 사용하여 cp컬렉션의 어떤 파일이 업데이트되었는지 확인하고 CD에서 해당 파일을 복사하는 것입니다.

cp -u -r --preserve=timestamps /media/CD /path/to/target/folder

여기 플래그는 -u소스의 최신 파일만 업데이트하며, 두 플래그를 조합하면 -r --preserve=timestamps전체 디렉터리 트리가 고려되고 복사된 각 파일이 해당 타임스탬프를 유지하도록 보장됩니다.

관련 정보