有一个网络服务器,其中有许多 dxf 类型文件,一次只能下载一个。我认为使用 wget 同时下载所有这些文件应该是一个好主意。不幸的是,我无法让 wget 成功完成此操作。
我的代码是:
wget -r -A.dxf www.site.com/example/download
此代码给出以下错误:
HTTP request sent, awaiting response... 403 Forbidden
Remote file does not exist -- broken link!!!
如果我指定具有确切文件名的 URL
wget -O www.site.com/example/download/filename.dxf
文件下载成功。
成功的递归 dxf 文件类型下载的代码应该是什么样子?
答案1
发生这种情况的原因可能403 forbidden
是网络服务器禁止目录的目录列表(因此它不会为您生成文件列表)。如果您知道要下载的文件列表,您可以创建一个简单的文本文件,然后告诉wget
下载列表。
例子:
$ cat list.txt
file1.dxf
file2.dxf
fileA.dxf
$ wget --base http://www.site.com/example/download --input-file list.txt
将下载网址:
答案2
*鉴于您知道文件名,它们是按顺序排列的,并且网络服务器允许您在单个会话中下载*,您有机会通过 shell 扩展来实现这一点。
假设您的示例中的文件名是 file1.dxf、file2.dxf ... file5.dxf。
您可以按如下方式下载文件:
wget -r -np -nd http://www.site.com/example/download/file{1..5}.dxf
下载的文件将是:
- 文件1.dxf
- 文件2.dxf
- 文件3.dxf
- 文件4.dxf
- 文件5.dxf
同样,如果您的文件是 filea.dxf、fileb.dxf .... filef.dxf
wget -r -np -nd http://www.site.com/example/download/file{a..f}.dxf
下载的文件将是:
- 文件a.dxf
- 文件b.dxf
- 文件c.dxf
- 归档.dxf
- 文件e.dxf
- 文件f.dxf
-r:递归,-np:无父级,-nd:无目录,这意味着文件已下载,但目录层次结构未下载。