변경 여부에 관계없이 rsync가 모든 파일을 바꾸는 것을 중지하는 방법은 무엇입니까?

변경 여부에 관계없이 rsync가 모든 파일을 바꾸는 것을 중지하는 방법은 무엇입니까?

rsync"copy_to_home" 디렉터리(NTFS 형식의 하드 드라이브에 있음)의 모든 내용을 사용자의 홈 디렉터리에 복사 하고 싶습니다 . 아무것도 삭제하고 싶지 않지만 수신측의 파일이 송신측의 파일과 다른 경우 수신측의 파일을 교체해야 합니다.

명령은 다음과 같습니다.

rsync --modify-window=1 -hh --progress -v -r copy_to_home/ ~/

내 문제는 이 명령을 실행할 때마다 ~파일이 아직 변경되지 않았음에도 불구하고 rsync가 항상 그 안에 있는 모든 파일을 바꾸는 것처럼 보인다는 것입니다. 이 --update옵션은 이 작업을 수행하지 않지만 수신자가 수정한 파일을 바꾸지는 않습니다.

답변1

Quora Feans의 답변이 도움이 되지 않으면 옵션을 추가하거나 -irsync --itemize-changes를 통해 파일을 업데이트하는 이유를 설명할 수 있습니다. 체크섬이 다르다는 것을 나타내는 문자열 YXcstpoguax(예: ) 을 인쇄합니다. c코드의 p권한이나 o소유자가 다를 수 있습니다. 이러한 문제는 일반적으로 -a해당 속성을 유지하는 옵션을 사용하여 해결됩니다 . 여전히 차이가 나타나면 --size-only크기가 다른 경우에만 파일을 업데이트해 보십시오(타임스탬프 무시).

답변2

Windows 형식의 파일 시스템이 포함될 때마다 타임스탬프 일치는 신뢰성이 떨어지고 파일이 끊임없이 다른 것으로 잘못 해석될 수 있으므로 rsync는 결국 모든 것을 복사하게 됩니다. Windows 형식 파일 시스템의 경우 타임스탬프 안정성이 좋지 않은 경우 해결 방법 중 하나는 타임스탬프를 전혀 비교하지 않고 내용을 비교하는 것입니다. Rsync에는 해당 -c옵션이 있으므로 명령 프롬프트에서 다음을 시도해 볼 수 있습니다.

$ rsync -c --progress -v -r copy_to_home/ ~/

설명하다

  • -c또는가 없으면 --checksumrsync는 일반적으로 파일 크기와 수정 시간을 비교하여 항목을 업데이트할지 여부를 결정하며, 보시다시피 Windows NTFS의 파일 및 디렉터리의 경우 가져오려고 해도 그다지 안정적이지 않습니다. 지금처럼 더 잘 일하세요--modify-window=1
  • 크기 비교 시 타임스탬프 비교만 생략하면 변경 전후에 파일 크기가 여전히 같은 파일이 있을 수 있으므로 rsync에서 파일 크기만 비교하면 손실됩니다.
  • -c비교 및 의사 결정을 위해 소스 및 대상 파일에서 rsync가 체크섬을 실행하도록 지정합니다 . 따라서 체크섬을 사용하여 rsync는 수정 시간이나 크기가 아닌 실제 내용을 기반으로 파일을 전송할지 여부를 결정하여 손실되는 항목이 없거나 불필요한 복사본이 생성되지 않도록 합니다.

결점

  • 파일이 클수록 실행 속도가 느려지므로 rsync를 사용하여 기가바이트 크기의 파일을 처리하면 속도가 확실히 느려집니다. 그러나 이것이 현재 상황이라면 기가바이트 크기의 파일을 불필요하게 복사하는 rsync에 비해 개선될 것입니다.
  • 그렇지 않고 일반적으로 rsync하려는 홈 디렉터리에 작은 텍스트 구성 파일만 있는 경우 체크섬 사용 지연은 최신 컴퓨터에서 눈에 띄지 않을 수도 있습니다.
  • 또는 기가바이트 크기의 파일이 있고 이 프로세스가 느린 경우 cron을 사용하여 사용량이 적은 시간에 실행되도록 명령을 예약합니다.

답변3

필요한 것은 아카이브 파일입니다. 그것은 -a옵션입니다. 시범 운영은 다음과 같습니다.

sudo rsync -avr --dry-run --delete <sourcedir/> <targetdir>

그리고 솔직하게 말하자면:

sudo rsync -avr --delete <sourcedir/> <targetdir>

/마지막에 sourcedir을 기록해 두십시오 .

관련 정보