[server] Mac에서 rsync –iconv 옵션이 작동하지 않음 (원격 Linux 서버에서 로컬 Mac으로 동기화)

rsync를 사용하여 원격 Linux 서버에서 로컬 Mac으로 데이터를 백업하고 싶습니다. 그리고 로컬 Mac에서이 작업을 초기화하고 싶습니다. 특수 문자 문제가 있다는 점을 제외하고는 모두 정상적으로 작동합니다. (초기 동기화 후) rsync 작업을 다시 실행할 때마다 특수 문자가있는 파일이 먼저 삭제 된 다음 다시 동기화됩니다. 내가 이해하는 한, 다른 문자 세트에 문제가 있으며 선호되는 해결책--iconv옵션 을 사용하는 것 같습니다 .

rsync의 –iconv 옵션을 사용하여 최소한 Mac을 사용하는 경우 UTF-8 NFC와 NFD간에 변환 할 수 있습니다. UTF-8 NFD를 나타내는 특수한 utf-8-mac 문자 세트가 있습니다. 따라서 Mac에서 NAS로 파일을 복사하려면 다음과 같이 실행해야합니다.

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

이렇게하면 모든 로컬 파일 이름이 UTF-8 NFD에서 원격 서버의 UTF-8 NFC로 변환됩니다. 파일 내용은 영향을받지 않습니다.

문제는 이것이 Mac에서 Linux로 동기화 할 때 나에게만 ‘일방적’으로 작동한다는 것입니다. 그러나 나는 다른 방향으로 가고 싶다. 즉 리눅스 머신에서 맥으로 동기화하고 싶다. 로컬 Mac에서 작업을 초기화하고 싶습니다. 그러나 내가 시도 할 때 :

rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/

오류가 발생합니다.

iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]

왜 이것이 작동하지 않는지 이해하지 못했습니다. Mac의 rsync 버전이 2.6.9에서 업데이트되었습니다. 3.1.1. Macports 사용 . 내가 (맥이 아닌) Mac에서 Linux로 rsync를 시작하면 작업이 작동합니다.

rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

그러나 Mac에서 다른 방향으로 나아가는 것은 작동하지 않습니다.

이상하게도 리눅스 머신에서 동기화를 시작하는 테스트는 다음과 같은 이상한 메시지를 렌더링합니다.

rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

[server=2.6.9]Mac에서 3.1.1로 업데이트되었지만 매우 이상한 주장 을 포함합니다. 어떤 이유로 든 내 리눅스 컴퓨터는 Mac의 원래 rsync 버전 만 ‘인식’합니다.

이 문제를 해결하는 방법에 대한 제안이 있으십니까?

업데이트 10 월 23 일 : @ Lee Johnson의 훌륭한 제안 (아래 참조)에 따라 Linux 서버에서 동기화가 시작됩니다. 완성을 위해 모든 조합을 시도했으며 흥미로운 패턴이 나타납니다.

MAC에서 :

작품 : Mac에서 Linux 로의 파일

실패 : Linux에서 Mac으로의 파일

리눅스에서

작동 : Linux에서 Mac으로의 파일

실패 : Mac에서 Linux 로의 파일

다시 말해, --iconv옵션은 로컬 시스템에서 원격으로 파일을 이동시키는 한 가지 방법으로 만 작동하는 것 같습니다. 그것은 나에게 버그처럼 보이지만 아마도 그것이 작동하는 방식일까요?

누구든지 이것에 빛을 공유 할 수 있습니까?



답변

많은 실험을 거친 후 @Lee Johnson의 유용한 제안으로 인해 마침내 해결책을 찾았습니다. 문제를 조사 할 때 읽은 의견으로 인해 변환 순서에 따라 문자 집합을 지정해야한다고 생각했습니다. 그러나 올바른 구문이 아닌 것 같습니다. 오히려, 하나는

항상 사용하는 --iconv=utf-8-mac,utf-8사용 항상 맥에서 rsync를 초기화하는 경우, 그리고 --iconv=utf-8,utf-8-mac리눅스 머신에서 rsync를 초기화하는 경우에 상관없이 나는 맥 또는 리눅스 컴퓨터에서 동기화 파일을 원하는 경우.

그러면 마법처럼 작동합니다!


답변

최근에 OS X Yosemite로 업그레이드 했습니까? / usr / bin / rsync를 버전 3.1로 업데이트 한 것을 기억하기 전에 같은 문제가있었습니다. Yosemite로 업그레이드하면 이전 2.6.9 버전으로 바뀌 었습니다.

필자의 경우 3.1 rsync를 다시 / usr / bin으로 다시 연결하여 Mac에서 문제를 해결했습니다.

sudo -s
cd /usr/bin
mv rsync rsync-2.6.9
ln -s /usr/local/bin/rsync .
exit


답변