如何在不创建父目录的情况下使用wget镜像目录?

时间:2011-02-18 15:36:03

标签: linux ftp wget mirror

我想通过FTP镜像文件夹,如下所示:

wget --mirror --user=x --password=x ftp://ftp.site.com/folder/subfolder/evendeeper

但我不想创建这样的目录结构:

  

ftp.site.com - >文件夹 - >子文件夹 - > evendeeper

我只想:

  

evendeeper

以下任何东西都是最终的结构。只要为服务器上evendeeper的子目录创建子目录,evendeeper的内容就可以在当前目录中结束。

我知道-np选项,根据文档,它只是让它跟随到父页面的链接(对于我通过FTP镜像的二进制文件没有问题)。我也知道-nd选项,但这会阻止创建任何目录结构,即使对于evendeeper的子目录也是如此。

我会考虑替代方案,只要它们是基于命令行的,可以作为Ubuntu软件包随时使用,并且像wget一样易于自动化。

4 个答案:

答案 0 :(得分:60)

对于像ftp.site.com/a/b/c/d

这样的路径

-nH会将所有文件下载到当前目录中的a/b/c/d目录,-nH --cut-dirs=3会将所有文件下载到当前目录中的d目录。

答案 1 :(得分:8)

-np(没有父级)选项可能会执行您想要的操作,与-L 1绑定(我认为,在我之前没有安装wget),这会将递归限制在一个级别

EDIT。好。 gah ...也许我应该等到我喝咖啡..有一个--cut或类似的选项,它允许你从输出路径“剪切”指定数量的目录,所以{{1减少2会强制wget在本地计算机上创建/a/b/c/d

答案 2 :(得分:8)

而不是使用:

-nH --cut-dirs=1

使用:

-nH --cut-dirs=100

这将删除更多目录,不会创建任何文件夹。

注意:100 =要跳过创建的文件夹数。 您可以将100更改为任意数字。

答案 3 :(得分:1)

我有类似的要求,以下组合似乎是完美的选择:

在下面的示例中,http://url/dir1/dir2(单独)中的所有文件都下载到本地目录/ dest / dir

.strip()

感谢@ffledgling提示“ -nd”

对于上述示例:

wget  -nd -np -P /dest/dir --recursive http://url/dir1/dir2

手册摘录:

wget -nd -np --mirror --user=x --password=x ftp://ftp.site.com/folder/subfolder/evendeeper