【问题标题】:How do I mirror a directory with wget without creating parent directories?如何在不创建父目录的情况下使用 wget 镜像目录?
【发布时间】:2011-06-29 22:02:07
【问题描述】:

我想通过 FTP 镜像一个文件夹,像这样:

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

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

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

我只想:

更深

它下面的任何东西都是结果结构。只要在服务器上为evendeeper 的子目录创建了子目录,evendeeper 的内容在当前目录中结束也是可以接受的。

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

我会考虑替代方案,只要它们是基于命令行的、可作为 Ubuntu 软件包轻松获得并且像 wget 一样易于自动化的。

【问题讨论】:

  • lftp: lftp -c mirror <url>

标签: linux ftp wget mirror


【解决方案1】:

对于类似的路径:ftp.site.com/a/b/c/d

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

【讨论】:

  • 谢谢,--cut-dirs 是我一直在寻找的灵丹妙药。
  • 如果您需要目录 d 中的所有文件,我会改为 --cut-dirs=4
  • -nH 只会忽略我的主机目录。你可以设置 --cut-dirs=100 来阻止几乎所有的 pre 目录 -- 勾选
  • 对于像ftp.site.com/a/b/c/d/ 这样的URL,很明显,人们只想要d/ 及其子文件夹中的内容。 wget 是否有自动切割选项或类似的东西,可以自动检测切割深度?
  • @con-f-use 我希望@Rex(以及Tony TCG's answer below)建议的--cut-dirs=100 技巧能够实现这一点,但是唉,它像-nd 一样工作,即它变平了整个层次结构,包括您正在下载的那个之下的子目录。看起来没有单独使用 wget 的自动解决方案......
【解决方案2】:

-np(无父)选项可能会做你想做的事,与-L 1(我认为,在我之前没有安装 wget)相关,这将递归限制在一个级别。

编辑。好的。 gah...也许我应该等到我喝完咖啡.. 有一个--cut 或类似的选项,它允许您从输出路径中“剪切”指定数量的目录,所以对于/a/b/c/d,一个cut of 2 将强制 wget 在您的本地计算机上创建 c/d

【讨论】:

  • 你的意思是:--cut-dirs=2——另外,-L--relative,所以你的意思可能是 -l--level=1
【解决方案3】:

而不是使用:

-nH --cut-dirs=1

使用:

-nH --cut-dirs=100

这将剪切更多目录并且不会创建任何文件夹。

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

【讨论】:

  • 那为什么不直接使用 -nd 呢?
【解决方案4】:

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

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

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

感谢@ffledgling 关于“-nd”的提示

对于上面的例子:

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

手册摘录:

   -nd
   --no-directories
       Do not create a hierarchy of directories when retrieving recursively.  With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
       filenames will get extensions .n).


   -np
   --no-parent
       Do not ever ascend to the parent directory when retrieving recursively.  This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 2012-08-27
    • 2014-07-30
    • 2021-06-22
    • 1970-01-01
    • 2020-05-21
    • 2016-12-12
    • 2017-04-09
    相关资源
    最近更新 更多