rsync 명령은 폴더 데이터를 다른 폴더에 동기화하는 데 사용됩니다. 이 명령이 전체 파일을 덮어쓰고 새 파일이나 변경된 파일을 동기화하거나 복사만 하는지 알고 싶습니다. 대상 폴더에 비슷한 이름의 파일이 있으면 메시지가 표시됩니까?
특히 저는 이것을 사용하고 rsync -rvh /usr/local/aryan/ /usr/local/aryan
있으며 로컬 컴퓨터에서 원격 컴퓨터까지의 모든 파일을 다룹니다. 10개의 파일을 원격 위치에 수동으로 복사한 다음 위 rsync
명령을 사용하여 처음 10개 파일을 포함하여 20개 파일을 동기화했습니다. 그러면 rsync -rvh command
원격 위치에 있는 모든 파일의 시간이 동일한 것을 볼 수 있습니다. 이는 모든 파일을 덮어쓴다는 의미입니다.
답변1
rsync
파일의 새 버전이 대상 옆에 생성된 다음 완료 후 마지막 순간에 대상 이름으로 전환되는 경우가 많습니다. 델타(즉, 소스와 타겟 간의 변경) 또는 전체 복사본을 사용하여 새 버전을 생성할 수 있습니다. (내 답변을 참조하세요.rsync보다 더 똑똑한 파일 전송?이 차이점을 더 명확하게 이해하려면. )
이 --partial
플래그는 rsync
어떤 이유로든 연결이 중단된 경우 부분적으로 전송된 파일이 유지되어 대상으로 사용됨을 나타냅니다. (그렇지 않으면 부분적으로 전송된 파일이 삭제됩니다.) 이 플래그의 장점은 rsync
중단 및 재시도 시 파일 전송에 소요된 시간과 대역폭이 낭비되지 않는다는 것입니다. 이 플래그의 단점은 중단 전에 90% 전송된 파일이 중단 전에 10%만 전송된 동일한 파일로 대체될 수 있다는 것입니다.
이 --inplace
플래그는 rsync
개체 파일을 직접 빌드하도록 지시합니다. 이는 일반적으로 시간상 효율성이 떨어지지만 원격 파일 시스템에 대상 파일의 전체 복사본 두 개를 동시에 두는 것을 방지합니다. 일반적으로 이 플래그는 사용하면 안 됩니다(실제로 다른 옵션(예: )과 충돌합니다 --sparse
).
답변2
실제로는 에 전달된 플래그에 따라 다르지만 rsync
기본적으로 전체 파일은 소스에서 대상으로 미러링됩니다. 단 , rsync
사용하여 어느 정도,,또는 다양한 제외 복잡성(또는--update
또는 할 수 있습니다. ( 등.).--existing
--ignore-existing
--exclude
--delete
--delete-excluded
--prune-empty-dirs
(다행히 감사합니다!) 프롬프트도 없고(비밀번호 제외), 내가 아는 한 "유사한 이름"은 지원되지 않습니다(어떤 사용 사례에서 이를 필요로 할까요?).
답변3
매뉴얼 페이지에서:
It is famous for its delta-transfer algorithm, which reduces the amount
of data sent over the network by sending only the differences between
the source files and the existing files in the destination.
테스트를 통해 이를 확인할 수 있습니다.
$ mkdir foo 바 $ echo "a" > foo/a $ rsync -av --stats foo/bar/ 델타 파일 목록 보내기 ./ ㅏ 파일 수: 2(reg: 1, dir: 1) 생성된 파일 수: 1(등록: 1) 삭제된 파일 수: 0 전송된 일반 파일 수: 1 --> 총 파일 크기: 2바이트 --> 전송된 파일의 총 크기: 2바이트 ...ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ...
이는 소스 디렉터리에서 대상 디렉터리로 2바이트의 데이터를 보내는 초기 rsync를 결정합니다.
이제 새 파일을 추가하고 rsync를 수행합니다.
$ echo "b" > foo/b 델타 파일 목록 보내기 ./ 두번째 파일 수: 3(reg: 2, dir: 1) 생성된 파일 수: 1(등록: 1) 삭제된 파일 수: 0 전송된 일반 파일 수: 1 --> 총 파일 크기: 4바이트 --> 전송된 파일의 총 크기: 2바이트 ...ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ...
여기서 rsync는 총 4바이트의 모든 파일을 올바르게 확인하지만 2바이트만 보내면 됩니다. 즉, 기존 파일을 덮어쓰지 않습니다.