나중에 새로 생성 된 파일을 추가하여 기본 웹 서버를 원격 서버에 동기화하도록 rsync를 설정하려고합니다.
내가 사용하는 명령은 다음과 같습니다.
rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar
그러나 웹 서버는 실제로 ‘–update’플래그에도 불구하고 모든 파일을 전송하는 것으로 보입니다. 나는 다른 플래그 조합을 시도했지만 (예 : ‘-a’를 생략하고 대신 ‘-uv’를 사용) 도움이되지 못했습니다. rsync 명령을 수정하여 새로 추가 된 파일 만 보내려면 어떻게해야하는지 궁금합니다. 감사
답변
보낸 사람 man rsync
:
--ignore-existing skip updating files that exist on receiver
--update
약간 다른 작업을 수행하므로 예기치 않은 결과가 발생하는 이유 일 수 있습니다 (참조 man rsync
).
이것은 rsync가 대상에 존재 하고 소스 파일보다 새로운 수정 된 시간을 가진 파일을 건너 뛰 도록합니다 . 기존 대상 파일의 수정 시간이 원본 파일의 수정 시간과 같으면 크기가 다른 경우 업데이트됩니다.
답변
필자의 경우 비슷한 문제가 발생하여 수정되거나 새로운 파일 대신 모든 파일이 전송되었습니다. I는 파라미터를 사용하여이를 해결 -t
(대신 -a
) 및 -P
(당량 --partial --progress
)
rsync -h -v -r -P -t 소스 대상
이것은 새 파일과 이미 존재하지만 수정 된 파일 만 전송합니다. -a
사용자 및 그룹 ID 동기화와 같이 너무 많은 작업을 수행합니다.이 경우 소스 및 대상 시스템에 다른 사용자 및 그룹이 있으므로 작동하지 않습니다.
매개 변수의 세부 사항 :
-h
: 사람이 읽을 수있는 숫자-v
: 자세한-r
: 디렉토리로 재귀-P
:--partial
(일부 전송 된 파일 유지) +
--progress
(전송 중 진행률 표시)-t
: 수정 시간 유지
답변
rsync에 대한 내 경험으로는 1TB 파티션 복사가 너무 커서 효율적이지 않습니다. 그것을 처리하는 데 rsync가 영원히 필요합니다. 대신 하위 디렉토리로 수행하십시오. 즉, 각 기본 서브 디렉토리에 대해 rsync를 실행하십시오. 수만 개의 파일을 저글링하지 않아도 훨씬 빠릅니다.
답변
시험
rsync -zvrt --update SOURCE DESTN