소스가 안전하게 업데이트되는 동안 rsync를 사용하고 있습니까?


19

rsyncrsync가 실행되는 동안 수정 될 수 있다고 가정 할 때 소스 파일 시스템이 마운트되고 쓰기 가능할 때 사용하는 것이 안전 합니까? 경쟁 조건에서 최신 수정 사항을 얻지 못할 수도 있지만 부패의 위험이 있습니까?


1
변경시 일관성 (데이터 파일과 같은 메타 데이터 파일과 같은 파일 간 또는 로그 등) 또는 손상 (단일 파일 내 ) 에 대해 걱정하고 있습니까?
CVn

좋은 지적은 파일 간 일관성을 고려하지 않았다는 것입니다. 나는 rsync실제로 그것에 대해 아무것도 할 수 없다고 생각 하지만 스냅 샷 만 할 수 있지만 파일 내 손상에 대해 더 걱정하고 있습니다.
brianmearns

답변:


20

rsync읽기 / 쓰기 마운트 파일 시스템에서는 사용 이 매우 안전합니다. 언제rsync시작 파일 목록을 작성한 다음 해당 파일을 복사하기 시작합니다. 이 파일 목록은 실행 중에 업데이트되지 않습니다. 그런 다음 실제 데이터가 복사됩니다.

즉 , 파일 목록을 만든 파일이 변경 rsync되면 내용 이 복사 됩니다. 그러나 파일 목록을 만든 후 새 파일을 추가rsync 하면이 새 파일이 복사되지 않습니다. 파일 목록을 작성한 후 파일이 삭제rsync 되면 rsync는 해당 파일을 복사 할 수 없다는 경고를 표시합니다. rsync스냅 샷이 아니라는 점을 명심하십시오. 즉 , 어느 시점에 말하기가 어렵습니다rsync , 데이터 복사 .

반면에 파일 시스템 또는 볼륨 관리자 스냅 샷 (예 : ZFS 또는 LVM 사용)은 즉시 생성되며 잘 정의 된 특정 시점에 파일 시스템의 일관된 스냅 샷으로 다른 호스트에 복사 될 수 있습니다. rsync이런 종류의 일관성을 제공하지 않습니다.

편집 : 다른 사람들이 의견에서 지적했듯이 rsync실제로 파일이 손상 될 수 있습니다. rsync가 파일 읽기를 시작하고 응용 프로그램이 동시에 해당 파일을 쓰고있는 경우 파일이 손상 될 수 있습니다.


2
삭제 된 파일에 메모를 추가했습니다. 볼륨 관리자 스냅 샷 + rsync 제안에 대해 가능하면 다른 의견을 제시 할 수 있습니다. 이 답변이 누락되었다고 생각하는 유일한 것은 소스의 파일이 복사되는 동안 변경 될 때 rsync의 동작입니다. 그래도 잘 처리하고 있는지 의심됩니다.
CVn

동의했다. 특정 파일이 일관성을 유지하려면 운영 체제 지원이 필요합니까?
Thorbjørn Ravn Andersen

1
이 답변은 소스 측의 응용 프로그램이 먼저 임시 파일에 쓴 다음 해당 위치로 옮기면 적용됩니다. rsync가 해당 파일을 읽는 동안 응용 프로그램이 쓰기 위해 기존 파일을 열면 rsync가 이전 버전과 새 버전의 손상된 믹스를 복사 할 수 있습니다.
Gilles 'SO- 악의를 멈춰라'

@Gilles 지적 해 주셔서 감사합니다. 답변을 업데이트했습니다. 이 rsync와 관련되거나이 발생할 않는 모든 다른 응용 프로그램이 동일한 파일에 기록하면서 읽고 응용 프로그램?
Marco

1
@Marco 둘 다 일부 잠금 프로토콜을 사용하지 않는 한 모든 응용 프로그램에서 발생합니다 (유닉스에는 필수 잠금 장치가 없으며 권고 잠금 장치 만 있습니다 (즉, 모두가 사용하는 경우에만 작동하는 잠금 장치)). 동시 수정이 중요한 경우 파일을 수정하는 일반적인 프로토콜은 임시 파일을 작성한 다음 제 위치로 옮기는 것입니다.
Gilles 'SO- 악의를 멈춰라'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.