“wget --restrict-file-names = windows” parece falhar na conversão de links para NTFS

1

Eu baixei um site da rede usando a ferramenta de linha de comando wget com --restrict-file-names=windows para que, quando o download estiver completo, eu possa copiar os arquivos baixados para uma partição montada do Windows 7 (mais precisamente, um diretório em um sistema host do Windows 7 montado a partir de um sistema convidado Ubuntu Linux rodando dentro do Oracle VirtualBox). No entanto, depois de montar o diretório e copiar o comando cp me deu um erro nos seguintes arquivos:

cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/1%81ка1%87а1%821%8C': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/1%831%811%82н1%8Bй-пе1%80евод': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/заве1%80ение': Protocol error
cp: cannot create regular file '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/к1%831%801%81-англий1%81кого.1': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/ново1%811%82и': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/к1%831%801%81-англий1%81кого': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/ка1%801%82а-1%81ай1%82а': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/подпи1%88и1%82е1%811%8C-на-на1%881%83-1%80а1%811%811%8Bлк1%83': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/category/ново1%811%82и': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/пи1%811%8Cменн1%8Bй-пе1%80евод': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/1%81в1%8Fзи': Protocol error
cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/1%83п1%80авление-подпи1%81ками': Protocol error

Como é que wget não converteu corretamente os links para que pudessem ser propriamente copiado para o sistema de arquivos do Windows 7 de 64 bits NTFS ?

EDIT # 1

Como apontado, o principal problema parece ser com o software de montagem do Oracle VirtualBox, embora IMHO algo possa ser feito no nível wget , porque se eu compactar os arquivos, copie a pasta zipada com cp para a partição montada e, em seguida, extraí-la com 7-Zip , então os nomes dos arquivos que não conseguiram ser copiados ainda possuem caracteres bagunçados / ilegíveis neles (estou me referindo em particular aos caracteres quase completamente pretos) como exibidos na imagem abaixo:

    
por John Sonderson 01.12.2014 / 23:38

1 resposta

2

Essas mensagens parecem com o software subjacente que você está usando para fazer a montagem não pode manipular os caracteres especiais que wget está usando devido ao argumento --restrict-file-names=windows .

cp: cannot create directory '/mnt/Desktop/WebSites/foo/www.johndoeandjanedoe.com/ru/1%81ка1%87а1%821%8C': Protocol error

Pela página wget man
--restrict-file-names=modes

Change which characters found in remote URLs must be escaped during generation of local filenames. Characters that are restricted by this option are escaped, i.e. replaced with %HH, where HH is the hexadecimal number that corresponds to the restricted character. This option may also be used to force all alphabetical cases to be either lower- or uppercase.

...

When "windows" is given, Wget escapes the characters \, |, /, :, ?, ", *, <, >, and the control characters in the ranges 0--31 and 128--159. In addition to this, Wget in Windows mode uses + instead of : to separate host and port in local file names, and uses @ instead of ? to separate the query portion of the file name from the rest. Therefore, a URL that would be saved as www.xemacs.org:4300/search.pl?input=blah in Unix mode would be saved as www.xemacs.org+4300/search.pl@input=blah in Windows mode. This mode is the default on Windows.

Para confirmar isso, tente usar 7z para criar um arquivo compactado do diretório (recursivamente), copiar o arquivo e, em seguida, descompactá-lo no Windows.

OBSERVAÇÃO: O problema é provável com os caracteres especiais que wget está usando quando você especifica que deve enviar arquivos para consumo no Windows, em combinação com o software usado para fazer a montagem .

    
por 02.12.2014 / 02:14

Tags