내가 요청했을 때 파일을 원래 위치로 복원하는 rsync 백업 스크립트를 실행했습니다. 하지만 복원하려고 할 때 대상의 파일이 백업의 파일보다 최신인 경우 해당 파일이 대체되지 않습니다. 최신 파일을 백업 파일로 바꾸고 싶지만 rsync를 사용하여 이 작업을 수행할 수 있는 방법을 찾지 못했습니다.
tldr: rsync가 대상의 파일을 강제로 덮어쓰도록 하는 방법이 있나요?
편집하다:rsync -avhp
백업을 복원하려고 할 때 실행 중입니다. 동일한 명령을 사용하지만 "to"와 "from"을 바꿉니다. 그래서 백업 드라이브의 파일을 내 컴퓨터에 있는 위치로 복사하려고 합니다.
답변1
설명서에는 다음과 같이 나와 있습니다.
-I, --ignore-times don't skip files that match size and time
자세한 내용은:
-I, --ignore-times
일반적으로 rsync는 이미 크기가 같고 수정 타임스탬프가 동일한 파일을 건너뜁니다. 이 옵션은 이 "빠른 확인" 동작을 꺼서 모든 파일이 업데이트되도록 합니다.
이 방법도 효과가 있을 수 있습니다(이 점을 지적한 Attila에게 감사드립니다).
--checksum, -c skip based on checksum, not mod-time & size
이는 rsync가 파일이 변경되었는지, 전송해야 하는지 확인하는 방식을 변경합니다. 이 옵션이 없으면 rsync는 "빠른 확인"(기본값)을 사용하여 보낸 사람과 받는 사람 사이의 각 파일 크기와 마지막 수정 시간이 일치하는지 확인합니다. 이 옵션은 각 파일의 128비트 체크섬을 일치하는 크기와 비교하도록 이 설정을 변경합니다. 체크섬을 생성한다는 것은 양 당사자가 전송 중인 파일의 모든 데이터를 읽는 데 많은 디스크 I/O를 소비한다는 것을 의미하므로 이로 인해 작업 속도가 크게 느려집니다(이는 변경된 파일을 전송하는 동안 읽기가 발생하기 전입니다).
발신자는 사용 가능한 파일 목록을 작성하기 위해 파일 시스템 검사를 수행할 때 체크섬을 생성합니다. 수신자는 변경된 파일을 검색하면서 체크섬을 생성하고 해당 발신자의 파일과 동일한 크기의 파일을 체크섬합니다. 전송을 위해 크기 또는 체크섬이 변경된 파일을 선택합니다.
rsync는 파일이 전송될 때 생성된 전체 파일 체크섬을 확인하여 전송된 각 파일이 수신 측에서 올바르게 재구성되었는지 항상 확인하지만 자동 전송 후 확인은 이 옵션과 관련이 없습니다. the-transfer "이 파일을 업데이트해야 합니까?" 보기.
사용되는 체크섬은 클라이언트와 서버 간에 자동으로 협상되지만 --checksum-choice(--cc) 옵션이나 해당 옵션 섹션에서 설명한 환경 변수를 사용하여 재정의할 수 있습니다.
--delete
소스 디렉터리에 존재하지 않는 대상 파일을 삭제하려는 경우 이 플래그를 언급하는 것이 좋습니다.
또 다른 유용한 옵션은 -n
실제 복사나 삭제 없이 rsync의 기능을 흉내내는 것입니다. 목록만 가능합니다. 자신이 하고 있는 일이 100% 확실하지 않을 때 매우 유용합니다.