Rsync 문자 세트 문제


5

Linux 상자에서 rsync를 사용하여 Windows 상자를 Linux 상자 (Ubuntu 9.10)로 백업하려고하는데 파일 이름에 이상한 문자가있는 파일 이름에 대해 "파일이 사라졌습니다"오류가 발생합니다. rsync 대신 "cp"를 사용하면 비슷한 오류가 발생합니다 ( "파일 또는 디렉토리 없음"). 영어 Windows 상자의 공유 소스.

문자 중 하나는 아포스트로피 문자입니다.

나는 다양한 --iconv 옵션을 가지고 놀고 있었지만 문제를 해결할 수 없었습니다. 제안?


아마도 실제 아포스트로피가 아닐 수도 있습니다. 아마도 "똑똑한"작은 따옴표 문자 일 것입니다.
quack quixote

답변:


7

Linux의 Windows에서 공유를 마운트 한 다음 rsync를 사용하여 파일을 로컬로 복사합니다. 공유를 어떻게 마운트합니까?

Windows는 파일 이름을 UTF8 또는 UTF16으로 저장해야하지만 공유에 올바르게 마운트 할 수 있도록 Linux에 알려야합니다. 같은 마운트 옵션을 사용하여 utf8/ utf16또는 iocharset=utf8/ iocharset=utf16당신의 마운트 명령 :

mount -t cifs -o utf16,other,options,here //server/share /path/to/mount/point
              ^^^^^^^^
                   |
                   -- if utf16 doesn't help, try iocharset=utf16
                      utf8 or iocharset=utf8 may also work

다른 사용자는 UTF16이 더 정확할 것임을 나타냅니다.


1
htf8이 굵은 글씨로 ntfs가 파일 이름을 저장한다고 주장합니다. m $ -api는 대부분 utf16 ( bit.ly/7c8SeRbit.ly/8hK2rs )에서 작동하지만 답변의 일반적인 방향은 정확합니다 :)
akira

당신은 그것에 대해 옳을 수도 있습니다. 내가 말할 수있는 것은 UTF8로 마운트 할 때 수정되지 않는 파일 이름 변환 문제가 없었지만 엄청나게 큰 비 ASCII 문자 집합을 사용하고 있지 않다는 것입니다.
quack quixote

그리고 나는 생각합니다 : 당신의 대답에 utf8을 utf16으로 바꾸면 문제의 해결책이 될 것입니다 :)
akira

집에 도착했을 때 두 가지 모두 시도해 보았습니다. 지금까지 팁을 주셔서 감사합니다.
Nerdfest

옵션 utf8 및 utf16은 효과가 없습니다. iocharset = utf16은 "필요한 공유 라이브러리에 액세스 할 수 없습니다"라는 오류를 생성했습니다. iocharset = utf8이 완벽하게 작동 한 것 같습니다. 도와 주셔서 감사합니다!
Nerdfest

0

이 문제를 해결하는 한 가지 방법은 특수 문자 파일 이름을 가진 제한된 디렉토리의 경우 디렉토리를 zip 또는 tar하고 해당 디렉토리에 대한 제외를 사용하여 rsync를 사용하는 것입니다 (그러나 대신 zip / tar 파일 포함).

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