wget
--restrict-file-names=windows
다운로드가 완료되면 다운로드한 파일을 Oracle Ubuntu의 설치된 Windows 7 파티션(보다 정확하게는 Windows 7 호스트 시스템이 설치된 디렉터리)에 복사할 수 있도록 명령줄 도구를 사용하여 웹에서 웹 사이트를 다운로드했습니다. VirtualBox에서 실행되는 Linux 게스트 시스템). 그러나 디렉터리를 마운트하고 cp
명령을 복사한 후 다음 파일 오류가 발생합니다.
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/\321%81ка\321%87а\321%82\321%8C': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/\321%83\321%81\321%82н\321%8Bй-пе\321%80евод': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/заве\321%80ение': Protocol error
cp: cannot create regular file `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/к\321%83\321%80\321%81-англий\321%81кого.1': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/ново\321%81\321%82и': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/к\321%83\321%80\321%81-англий\321%81кого': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/ка\321%80\321%82а-\321%81ай\321%82а': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/подпи\321%88и\321%82е\321%81\321%8C-на-на\321%88\321%83-\321%80а\321%81\321%81\321%8Bлк\321%83': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/category/ново\321%81\321%82и': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/пи\321%81\321%8Cменн\321%8Bй-пе\321%80евод': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/\321%81в\321%8Fзи': Protocol error
cp: cannot create directory `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/\321%83п\321%80авление-подпи\321%81ками': Protocol error
wget
Windows 7 64비트 파일 시스템에 올바르게 복사할 수 있도록 링크가 올바르게 변환되지 않는 이유는 무엇 입니까 NTFS
?
편집 #1
지적했듯이 주요 문제는 Oracle VirtualBox의 설치 소프트웨어인 것 같습니다. IMHO는 wget
해당 수준에서도 작업을 수행할 수 있지만 파일을 압축하면 압축 폴더를 cp
설치된 파티션에 복사한 다음 7-Zip
, 그리고 복사에 실패한 파일 이름에는 아래 이미지에 표시된 것처럼 여전히 왜곡되거나 읽을 수 없는 문자가 포함되어 있습니다(특히 거의 완전히 검은색 정사각형 문자를 나타냄).
답변1
이러한 메시지는 설치에 사용한 기본 소프트웨어가 매개변수 wget
로 인해 --restrict-file-names=windows
사용된 특수 문자를 처리할 수 없는 것처럼 보입니다.
cp: `/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/\321%81ка\321%87а\321%82\321%8C' 디렉토리를 생성할 수 없습니다: 프로토콜 오류
wget
매뉴얼 페이지 에 따르면
--restrict-파일 이름=패턴로컬 파일 이름 생성 중에 원격 URL에 있는 문자를 이스케이프해야 하는 방법이 변경되었습니다. 이 옵션으로 제한된 문자는 이스케이프됩니다. 즉, %HH로 대체됩니다. 여기서 HH는 제한된 문자에 해당하는 16진수입니다. 이 옵션을 사용하면 모든 문자를 소문자 또는 대문자로 강제 설정할 수도 있습니다.
...
"windows"가 지정되면 Wget은 \, |, /, :, ?, ", *, <, > 문자와 0~31 및 128~159 범위의 제어 문자를 이스케이프합니다. , Windows 모드에서 Wget : 대신 +를 사용하여 로컬 파일 이름에서 호스트와 포트를 분리하고, Unix 모드에서 xemacs.org:4300/search.pl?input=blah의 쿼리 부분을 나머지 파일 이름과 분리하려면 ? 대신 @를 사용합니다. Windows 모드는 www.xemacs.org+4300/search.pl@input=blah로 저장됩니다. 이 모드는 Windows의 기본 모드입니다.
이를 확인하기 위해 7z
디렉터리의 압축된 아카이브를 만들고(재귀적으로) 파일을 복사한 다음 Windows에서 압축을 풀어 보았습니다.
노트:wget
Windows에서 사용할 파일을 출력하도록 지정하면 설치에 사용되는 소프트웨어와 함께 사용할 때 이러한 특수 문자와 관련된 문제가 발생할 수 있습니다.