Documents and Settings
Puppy Linux의 USB Live를 사용하여 Windows XP 시스템의 폴더를 NTFS 외부 디스크로 복사하려고 합니다 .
이름 파일에 인코딩 문제가 있습니다. 시스템이 이탈리아어 특수 문자(utf-8의 일부)를 인식하지 못하기 때문에 cp
또는 GUI 파일 관리자를 사용하면 오류가 발생합니다 invalid or incomplete multibyte or wide character
.
이름에 특수 문자가 포함된 파일을 NTFS 드라이브에 복사하는 방법은 무엇입니까?
답변1
파일 이름이 NTFS 파일 시스템에서 유효한 것이 확실합니까?
파일 이름이 동일하게 유지되어야 합니까?
그렇지 않은 경우 "이상한" 문자를 제거하여 생활을 더 쉽게 만들 수 있습니다.
이를 수행하는 도구가 있습니다.detox
.
파일 이름을 먼저 변경하지 않고도 이름이 바뀔 내용을 확인할 수 있습니다.
$ detox -n somedir/*
그런 다음 실제로 다음을 수행하십시오.
$ detox somedir/*
또 다른 접근 방식은 자체적으로 파일 이름을 정리("삭제")하는 방식으로 NTFS 파일 시스템을 마운트하는 것입니다.
이 기능을 활성화하는 설치 옵션이 있습니다 windows_names
.
~에서man ntfs-3g
:
windows_names
This option prevents files, directories and extended attributes
to be created with a name not allowed by windows, either because
it contains some not allowed character (which are the nine
characters " * / : < > ? \ | and those whose code is less than
0x20) or because the last character is a space or a dot.
Existing such files can still be read (and renamed).
답변2
rsync는 선택적으로 대상 파일 시스템에 맞게 파일 이름을 변경할 수 있습니다. 매뉴얼 페이지에서:
--iconv=CONVERT_SPEC
Rsync는 이 옵션을 사용하여 문자 집합 간에 파일 이름을 변환할 수 있습니다. "."에 CONVERT_SPEC를 사용하면 rsync가 로케일을 통해 기본 문자 집합을 찾도록 지시합니다. 또는 --iconv=LOCAL,REMOTE 순서로 로컬 및 원격 문자 집합을 제공하여 수행할 변환을 완전히 지정할 수 있습니다(예: --iconv=utf8,iso88591). 이 순서를 따르면 파일을 밀어넣거나 끌어오더라도 옵션이 동일하게 유지됩니다.
노력하다
rsync --iconv=. --archive /source /destination
또는 로컬 파일 시스템이 ISO-8859-1임을 지정합니다.
rsync --iconv=ISO-8859-1,. --archive /source /destination
두 개의 드라이브를 로컬로 마운트하면 어떤 파일 시스템이 원본이고 어떤 파일 시스템이 대상인지 어떻게 결정하는지 알 수 없습니다. 그러나 이것이 나에게 효과적인 것입니다.
답변3
iocharset=utf8
설치 옵션에 추가하세요 .
mount -o iocharset=utf8 /dev/sdd1 /mnt/external
이제 MS Windows 표준을 위반하는 파일을 NTFS 파티션에 복사할 수 있습니다.
Windows의 외장 드라이브에서 이 작업을 수행하면 문제가 발생 chkdsk
하지만 파일 시스템이 손상되지 않도록 주의할 수 있습니다. :-)