wget
我使用命令行工具 从网上下载了一个网站--restrict-file-names=windows
,这样一旦下载完成,我就可以将下载的文件复制到已安装的 Windows 7 分区(更准确地说,是从 Windows 7 主机系统安装的目录)在 Oracle VirtualBox 中运行的 Ubuntu 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 的安装软件,尽管恕我直言,也可以在该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 是与受限制字符对应的十六进制数。此选项还可用于强制所有字母大小写为小写或大写。
...
当给出“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 上使用时,与用于进行安装的软件结合使用时,可能会出现这些特殊字符的问题。