rsync : 최상위 디렉토리를 제외하는 방법


14

그래서 나는 겉보기에는 간단한 문제가 있지만 지금까지 해결책을 찾지 못했습니다 : 여전히 모든 하위 항목을 동기화하면서 rsync에서 최상위 디렉토리를 제외하고 싶습니다. 특정 문제는 최상위 디렉토리의 시간을 수정할 수있는 권한이 없지만 모든 어린이가 올바르게 동기화 된 시간을 원한다는 것입니다.

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

rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/

server.example.com:/usr/local/directory/모양이 맘에 :

drwxrws---  5 root   staff 24576 Jul  9 15:00 .

(내 로컬 사용자는의 멤버입니다 staff)

rsync를 실행하면 다음 오류가 발생합니다.

rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23

이것은 로컬 머신에서 버전 3.0.9이고 원격에서 3.0.7입니다. 두 머신 모두 데비안을 실행합니다.


이 예제의 구문에 익숙하십니까 : wirespeed.xs4all.nl/mediawiki/index.php/… 그렇지 않으면 제외 된 디렉토리에서 특정 파일 / 디렉토리를 포함 할 수 있습니다. 제외 파일을 사용해야 할 수도 있습니다.
jippie

네. 문제는 최상위 디렉토리 (특히)를 제외하도록 설득 할 수 없다는 것입니다. 과거에 혼합 포함 / 제외에 문제가 없었지만 최상위 수준이 특별한 경우 인 것 같습니다.
Steve Pomeroy

답변:


8

rsync의 필터 규칙은 최상위 디렉토리와 일치 할 수 없으므로 항상 동기화됩니다. 임시 해결책은 디렉토리 자체 대신이 디렉토리 내의 모든 파일을 동기화하는 것입니다.

rsync -rlptDu -- * server.example.com:/usr/local/directory/

더하다 .[!.]* 후에 *는 최상위 디렉토리에있는 점 파일이있는 경우, 그리고 ..?*두 개의 점으로 시작하는 파일 이름이있는 경우.


2
정말 고마워요! 작동합니다. 이 기술의 유일한 단점은 셸에서 모든 파일을 선택해야한다는 것입니다. 디렉토리에 많은 파일이 있으면 (내 경우에는 그렇지 않습니다) 질식 할 수 있습니다. 아마도 xargs를 사용하여 해결할 수 있습니다 (--delete 옵션이 아닌 경우도 있음).
Steve Pomeroy

내가 사용에있어 하나의 문제는 *그했다 --delete가 검색의 일부가 된 이후, 모든 파일을 삭제하지 않았다.
thomasa88

@ thomasa88 이 답변을 참조하십시오 .
Kamil Maciorowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.