rsync는 다른 파일을 선언하지만 diff는 그렇지 않습니까?

rsync는 다른 파일을 선언하지만 diff는 그렇지 않습니까?

로컬과 서버에 파일이 있습니다. 먼저 rsync"드라이런(dry-run)" 모드에서 실행하여 파일들 사이에 몇 가지 차이점이 있는지 확인했습니다.

$ rsync -aP --dry-run [email protected]:/home/dir .
[email protected]'s password: 
receiving incremental file list
dir/myfile.txt

dir/myfile.txt이는 분명히 파일 이 업데이트될 것이기 때문에 파일이 다르다는 것을 의미합니다 . 그런 다음 다음을 사용하여 동일한 파일을 확인했습니다 diff.

$ ssh [email protected] 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt
[email protected]'s password: 
Files - and dir/myfile.txt are identical

따라서 분명히 이 파일들은 동일합니다.

이 파일이 업데이트되는 이유는 무엇 rsync입니까? 명령줄에서 이유를 어떻게 확인할 수 있습니까?

답변1

rsync변경 보고서

  • 권한 차이
  • 타임스탬프 차이
  • 콘텐츠(및 파일 크기) 차이

@roaima는 댓글에서 선택할 수 있다고 지적했습니다.rsync 매뉴얼 페이지:

-i, --itemize-changes       output a change-summary for all updates

가능한요약이 간결하고 (내가 가지고 있는 버전에서는) 보고만 하기는 했지만 유용했습니다.유형(파일, 링크 또는 디렉토리) 및이름. 다음은 Debian 7 및 테스트 시스템에서 rsync 3.0.9-4 및 3.1.1-3을 사용하여 본 결과입니다.

cd+++++++++ backup-invisible-island/
>f+++++++++ backup-invisible-island/.bash_history
cL+++++++++ backup-invisible-island/conf -> ../system/invisible-island.net/conf
cL+++++++++ backup-invisible-island/statistics -> ../system/invisible-island.net/statistics
cd+++++++++ backup-invisible-island/anon_ftp/
cL+++++++++ backup-invisible-island/anon_ftp/AdaCurses -> pub/AdaCurses
cL+++++++++ backup-invisible-island/anon_ftp/DEBS -> pub/DEBS
cL+++++++++ backup-invisible-island/anon_ftp/GIT -> pub/GIT

제가 직접 사용하는 경우 디렉터리 타임스탬프를 변경하는 것은 상대적으로 중요하지 않습니다. 내가 사용하는 스크립트는 다음과 같은 내용만 표시합니다.문서변경된 사항:

rsync: 대상의 최신 파일을 덮어쓸 때 표시

답변2

Rsync는 파일 내용을 비교하지 않고 동일하다고 판단할 수 없는 경우 파일을 동기화합니다. 내용을 확인하지 않고 파일이 동일한지 알 수 없는 경우 파일을 동기화하고 차이점이 없음을 인식할 수 있습니다.

기본적으로 두 파일의 크기와 타임스탬프가 동일한 경우 rsync는 두 파일이 동일하다고 판단합니다(따라서 해당 내용 읽기를 건너뜁니다).

두 파일이 동일할 때 서로 다른 것으로 간주되는 가장 일반적인 이유는 해당 파일이 과거에 복사되었으며 복사본의 타임스탬프가 복사본의 타임스탬프가 아니라 복사본 날짜이기 때문에 내용은 동일하지만 타임스탬프가 다르기 때문입니다. 원본 파일 . 예를 들어, 파일이 scp없이 -p, 포함 rsync없이 -p복사 되었거나 -a웹 브라우저를 통해 다운로드되었을 수 있습니다.

타임스탬프가 다른 경우 rsync는 메타데이터( )를 동기화하도록 지시했기 때문에 파일을 동기화해야 합니다 -a. 따라서 목록에 있는 내용은 rsync -n완벽하게 이해됩니다. rsync가 수행할 작업이 있습니다. 어쨌든 시간을 동기화하는 것은 좋은 생각입니다. 더 이상 할 일이 없다는 것을 알면서 rsync가 미래에 실행되도록 예약하는 유일한 방법이기 때문입니다.

답변3

이전 답변에 유의하십시오. 동일한 파일이 변경되었다고 반복적으로 보고하는 rsync를 발견하면 타임스탬프 문제일 가능성이 높습니다. 일부 파일 시스템(특히 FAT)은 덜 정확한 타임스탬프를 저장하므로 rsync가 이를 설정하지 못할 수도 있습니다. 서로 다른 파일 시스템은 동일한 타임스탬프를 갖습니다.

답변4

먼저, 이유를 알아보세요. 실행 $ls -lau하고 권한과 타임스탬프 차이를 확인하세요. 서로 다르다면 문제가 되며 -p복사 권한을 전달하고 -t복사에 타임스탬프를 사용해야 합니다.

사용량으로 볼 때 정기적으로 데이터를 백업하고 계신 것 같습니다. 이를 "타임시프트"라는 프로그램이 완벽하게 해 주지만 아쉽게도 원격 백업을 공식적으로 지원하지는 않지만,해결 방법은 이 제안을 확인하세요..

관련 정보