rsync - 쓰기를 시도하기 전에(로컬로) 읽기/읽기/비교를 실행하시겠습니까?

rsync - 쓰기를 시도하기 전에(로컬로) 읽기/읽기/비교를 실행하시겠습니까?

내 이해 rsync(완전히 틀렸을 수도 있음)는 먼저 시도할 것이라는 것입니다.읽다파일(존재하는 경우 소스와 대상)은 대상에 무언가를 쓰려고 시도하기 전에 비교됩니다(읽는 것보다 느리기를 바랍니다). 내 홈 디렉터리의 백업을 동기화하기 위해 rsync를 실행 중이고, 소스 및 대상 디스크에서 많은 읽기가 표시되는 대신(이전 rsync 실행 후) 소스 및 대상에서 많은 쓰기가 표시됩니다. 디스크를 입력합니다.목적지디스크, 이건 전혀 예상하지 못한 일이에요. rsync는 항상 이렇게 작동하나요?

만일의 경우에 제가 사용하는 방식은 다음과 같습니다.

rsync --delete -r /home/my-home /mount-point-other-disk/

답변1

rsync로컬 디스크에서 로컬 디스크로 복사 중 입니다 . 이렇게 하면 많은 최적화가 해제되고 거의 단순해집니다 cp.

--times또한 ( ) 플래그를 포함하지 않음으로써 -t나머지 최적화를 해제했습니다. 즉, 정확히 동일하게 됩니다 cp.

rsync에 대한 내 이해(완전히 틀릴 수 있음)는 대상에 무엇이든 쓰기를 시도하기 전에 먼저 비교를 위해 파일(소스 및 대상이 존재하는 경우)을 읽으려고 시도한다는 것입니다(읽는 것보다 빠를 것으로 예상됨). .

rsync이는 두 시스템 간의 네트워크를 통해 복사하는 경우에만 발생합니다.

대상 디스크에 많은 쓰기가 표시됩니다.

이는 rsync대상 파일에 대한 정보를 가정할 수 없으므로 백업을 시도할 때마다 해당 파일을 덮어쓰기 때문입니다.

설명하다:

이상적으로는 rsync자신을 클라이언트로 실행하고 원격 시스템에서 서버 프로세스를 시작하는 것입니다. 대상 파일이 대상에 이미 존재하는 것으로 가정하면 두 프로세스는 각각 로컬 복사본을 읽고 체크섬 블록을 통해 파일의 어느 부분이 다른지 식별합니다. 그런 다음 이러한 차이점이 네트워크를 통해 전송되고 대상 파일이 업데이트됩니다. (이것은 슬라이딩 체크섬이므로 전송될 유일한 청크인 파일 시작 부분에 바이트를 삽입할 수도 있습니다.)

rsync그러나 단일 시스템에서 읽기 및 쓰기 자체를 관리하는 경우 읽기 및 쓰기에 동일한 시간이 소요된다고 가정합니다. (이것은 플래시의 경우 반드시 해당되는 것은 아니지만 함께 작동합니다.) 따라서 소스 및 대상 파일을 비교하기 위해 읽는 데는 대상을 업데이트하는 쓰기를 고려하기 전에 걸리는 시간이 대략 걸립니다. 대상 파일을 다시 작성해야 하므로 그렇게 합니다.

가능한 해결책:

  1. NAS에 쓰는 경우 로컬로 마운트된 NAS 파일 시스템에 쓰지 마십시오. 대신, rsync프로토콜을 사용하여 네트워크를 통해 NAS에 직접 쓰거나 sshNAS에 원격으로 로그인하여 해당 연결을 통해 데이터를 전송하십시오. 이 경우 다음과 유사한 명령줄이 필요합니다.

    rsync -a --delete -M--fake-super /home/my-home remoteNAS:/path/to/mount-point-other-disk/
    
  2. 로컬로 연결된 두 디스크 간에 읽기/쓰기를 수행하는 경우 --times( -t) 옵션을 포함하고 rsync복사된 것으로 나타나는 파일이 무시되도록 허용합니다.

    rsync -a --delete /home/my-home /mount-point-other-disk/
    rsync -rt --delete /home/my-home /mount-point-other-disk/
    

    첫 번째는 모든 메타데이터를 복사하므로 NTFS 또는 FAT와 같은 Linux가 아닌 기본 파일 시스템에 쓰는 데 적합하지 않습니다. 두 번째는 파일을 복사하지만 마지막 수정 시간만 유지합니다(권한이나 소유권은 없음). FAT 파일 시스템에 쓰는 경우 2초 정밀도의 타임스탬프만 캡처할 수 있으므로 rsync너무 많은 것을 기대하지 않도록 주의해야 합니다.

    rsync -rt --modify-window 1 --delete /home/my-home /mount-point-other-disk/
    

관련 정보