새 파일 만 재 동기화하는 방법


144

나중에 새로 생성 된 파일을 추가하여 기본 웹 서버를 원격 서버에 동기화하도록 rsync를 설정하려고합니다.

내가 사용하는 명령은 다음과 같습니다.

rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar

그러나 웹 서버는 실제로 '--update'플래그에도 불구하고 모든 파일을 전송하는 것으로 보입니다. 나는 다른 플래그 조합을 시도했지만 (예 : '-a'를 생략하고 대신 '-uv'를 사용) 도움이되지 못했습니다. rsync 명령을 수정하여 새로 추가 된 파일 만 보내려면 어떻게해야하는지 궁금합니다. 감사


2
당신이 파일을 동기화 할 경우 원격 서버, 그것은 마지막 오지해야합니까? rsync /foo/bar remoteuser@remotehost:/foo/bar
ostrokach 2016 년

웹 페이지에 관심이있을 수 있습니다 . 또한 파일 시스템에주의하십시오. 서버의 파일 시스템이 모든 -a옵션을 지원하지 않는 경우 (소유자, 그룹, 권한 등) 이것이 문제의 원인이됩니다.
ppr

2
로컬 파일이 원격 대상으로 완전히 복사되지 않고 최신 파일 만 재 동기화하려는 문제를 해결하는 답변은 없습니다.
Axel Bregnsbo

방금 -c옵션을 찾았습니다 . 수정 시간이나 크기 대신 체크섬을 기반으로 기존 파일을 건너 뜁니다.
haheute

답변:


181

보낸 사람 man rsync:

--ignore-existing       skip updating files that exist on receiver

--update약간 다른 작업을 수행하므로 예기치 않은 결과가 발생하는 이유 일 수 있습니다 (참조 man rsync).

이것은 rsync가 대상에 존재 하고 소스 파일보다 새로운 수정 된 시간을 가진 파일을 건너 뛰 도록합니다 . 기존 대상 파일의 수정 시간이 원본 파일의 수정 시간과 같으면 크기가 다른 경우 업데이트됩니다.


1
실제로 나는 '--update'대신 '--ignore-existing'으로 명령을 시도했습니다. 빨리 완료되었지만 새 파일을 원격 호스트에 넣지 않습니다. 어떤 아이디어? 감사합니다
supermario

13
맨 페이지에서 맨 페이지가 빨라 (즉, 내가 갔다) --ignore-existing수신기에있는 파일을 전송하지 않거나 동일한 이름의 파일 / 폴더가 수신기에 있으면 파일을 전송 하지 않는다는 것을 의미합니까?
puk

7
--update mtime이 동일 할 때 파일을 건너 뜁니다 ( 단어가 의미 하는 것은 아닙니다 ). 나는 이것을 테스트했다. "대상보다 최신 인 소스 파일 만 복사됩니다"라고 말하면 문구가 더 잘 이해 될 것입니다.
Octopus

4
@Octopus "대상보다 최신 인 소스 파일 만 복사됩니다" 또는 대상 파일과 수정 시간은 같지만 크기가 다른 소스 파일 . 나는 이것이 중요한 포인트라고 생각합니다. (Chris는 이미 그 사실을 다뤘습니다.)
Jonathan Komar

따라서 --ignore-existing 및 -r (recursive)이 필요합니다. -v (verbose)도 가지고 있습니다 :-)
DutchUncle

40

필자의 경우 비슷한 문제가 발생하여 수정되거나 새로운 파일 대신 모든 파일이 전송되었습니다. I는 파라미터를 사용하여이를 해결 -t(대신 -a) 및 -P(당량 --partial --progress)

rsync -h -v -r -P -t 소스 대상

이것은 새 파일과 이미 존재하지만 수정 된 파일 만 전송합니다. -a사용자 및 그룹 ID 동기화와 같이 너무 많은 작업을 수행합니다.이 경우 소스 및 대상 시스템에 다른 사용자 및 그룹이 있으므로 작동하지 않습니다.

매개 변수의 세부 사항 :

  • -h: 사람이 읽을 수있는 숫자
  • -v: 자세한
  • -r: 디렉토리로 재귀
  • -P: --partial(일부 전송 된 파일 유지) +
            --progress(전송 중 진행률 표시)
  • -t: 수정 시간 유지

2
'-a가 너무 많음'에 +1 (실제로 -rlptgoD권한이 평평하지 않으며 그룹 및 소유자가 보존 됨-내 전형적인 놀이 안전 백업이
아닙니다

2

rsync에 대한 내 경험으로는 1TB 파티션 복사가 너무 커서 효율적이지 않습니다. 그것을 처리하는 데 rsync가 영원히 필요합니다. 대신 하위 디렉토리로 수행하십시오. 즉, 각 기본 서브 디렉토리에 대해 rsync를 실행하십시오. 수만 개의 파일을 저글링하지 않아도 훨씬 빠릅니다.


1
메모리 부족으로 시스템 교체가 시작 되었습니까?
Marcel Burkhard

-2

시험

rsync -zvrt --update SOURCE DESTN

8
위의 명령에 대한 좀 더 설명은 OP에 감사하겠습니다.
Peschke

맨 페이지에서`-u, --update 수신기에서 최신 파일을 건너 뜁니다`
ShoeLace
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.