rsync를 사용하여 파일의 수정된 부분만 업로드

rsync를 사용하여 파일의 수정된 부분만 업로드

cwrsync를 사용하여 Windows에서 원격 및 로컬 폴더를 동기화하기 위해 rsync를 연구 중입니다. 변경사항의 일부만 업로드할 수 있는지 궁금합니다.

예를 들어 처음에는 100MB 파일이 있는데 다음 명령을 사용하여 업로드하겠습니다.

rsync -a /source/path/ /dest/path/

그런 다음 해당 파일을 일부 변경하겠습니다. 동일한 명령을 다시 실행하면 전체 100MB 파일이 다시 업로드됩니다. 대신 업로드하는 동안 해당 파일에 대한 변경 사항을 추가하는 방법은 무엇입니까?

답변1

필요한 것은 옵션입니다 --inplace.

관련 부분을 읽어 보시기를 강력히 권합니다.rsync 매뉴얼이 옵션이 무엇을 의미하는지 이해하세요.

--inplace이 옵션은 데이터를 업데이트해야 할 때 rsync가 파일을 전송하는 방법을 변경합니다. 파일의 새 복사본을 생성하고 완료되면 해당 위치로 이동하는 기본 방법 대신 rsync는 업데이트된 데이터를 대상 파일에 직접 씁니다. .

여기에는 여러 가지 효과가 있습니다.

  • 하드링크는 깨지지 않습니다. 이는 새 데이터가 대상 파일에 대한 다른 하드 링크를 통해 표시된다는 의미입니다. 더욱이 여러 소스 파일을 다중 연결된 대상 파일에 복사하려고 시도하면 대상 데이터가 앞뒤로 변경되는 "줄다리기"가 발생합니다.
  • 사용 중인 바이너리는 업데이트할 수 없습니다(OS가 이를 방지하거나 데이터 교체를 시도하는 바이너리가 오작동하거나 충돌할 수 있음).
  • 파일의 데이터는 전송 중에 일관되지 않은 상태가 되며 전송이 중단되거나 업데이트가 실패하는 경우 해당 상태로 유지됩니다.
  • rsync가 쓸 수 없는 파일은 업데이트할 수 없습니다. 슈퍼 유저는 모든 파일을 업데이트할 수 있지만 일반 사용자는 파일을 성공적으로 열려면 쓰기 권한을 부여받아야 합니다.
  • 대상 파일의 일부 데이터를 파일의 나중에 위치에 복사하기 전에 덮어쓰면 rsync의 델타 전송 알고리즘의 효율성이 줄어들 수 있습니다. 사용하는 경우에는 적용되지 않습니다. --지원, rsync는 백업 파일을 전송의 기본 파일로 사용할 만큼 똑똑하기 때문입니다.

경고: 다른 사람이 액세스하고 있는 파일을 업데이트하는 데 이 옵션을 사용해서는 안 되므로 복사본에 이 옵션을 사용할 때는 주의하십시오.

이 옵션은 블록 기반 변경 사항이나 추가된 데이터가 있는 대용량 파일을 전송하는 데 유용하며 네트워크 바인딩이 아닌 디스크 바인딩된 시스템에서도 유용합니다. 또한 기록 중 복사 파일 시스템 스냅샷이 사소한 변경 사항만 있는 파일의 전체 내용을 분기하는 것을 방지하는 데 도움이 될 수 있습니다.

옵션은 다음을 의미합니다.--부분(중단된 전송은 파일을 삭제하지 않기 때문에) 그러나 다음과 충돌합니다.--부분-디렉터리그리고 --지연 업데이트. rsync 2.6.4 이전--inplace와도 호환되지 않았습니다.--비교 대상그리고--링크 대상.

파일 증가에만 관심이 있거나 옵션이 --append있을 수도 있습니다 .--append-verify

답변2

rsync를 사용하여 디렉터리에서 다른 디렉터리로 복사하고 있습니다. - 옵션--전체 파일그러면 다음이 적용됩니다.

-W, --전체 파일이 옵션을 사용하면 rsync의 델타 전송 알고리즘이 사용되지 않으며 대신 전체 파일이 있는 그대로 전송됩니다. 원본 컴퓨터와 대상 컴퓨터 사이의 대역폭이 디스크 대역폭보다 높을 때(특히 "디스크"가 실제로 네트워크로 연결된 파일 시스템인 경우) 이 옵션을 사용하면 전송 속도가 더 빨라질 수 있습니다.이는 원본과 대상이 모두 로컬 경로로 지정된 경우 기본값이지만 일괄 쓰기 옵션이 적용되지 않는 경우에만 해당됩니다.

델타 전송으로 rsync 알고리즘을 트리거하려면 한쪽에서 데몬 모드로 rsync를 시작해야 합니다.

관련 정보