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
옵션은 로컬 시스템에서 원격으로 파일을 이동시키는 한 가지 방법으로 만 작동하는 것 같습니다. 그것은 나에게 버그처럼 보이지만 아마도 그것이 작동하는 방식일까요?
누구든지 이것에 빛을 공유 할 수 있습니까?
.DS_Store
동기화 에서 제외 하고이 OSX로 인해이 파일이있는 디렉토리를 삭제할 수 없습니다. 문자 세트를로 설정 --iconv
하고 Mac에서 rsync 경로를 --rsync-path
(homebrew를 사용하고 있음)으로 설정 한 다음 --delete-excluded
완고한 디렉토리를 삭제할 수 있도록 추가 해야했습니다.
rsync
mac에서 사용자 정의 (예 : homebrew에서)를 사용하고 Linux에서 호출 할 때--rsync-path="/usr/local/bin/rsync"