使用 cli(wget ...)在本地下载(apache)在线目录

使用 cli(wget ...)在本地下载(apache)在线目录

这不是一个真正的问题 - 但当然欢迎其他答案!:)

有时我需要下载 Apache 目录列表中列出的文件,如下所示:

... 在我的计算机上的给定目录中,我想为此使用命令行工具。

就目前而言wget,实际上应该有一些开关 - 注意到倾向于wget下载单个项目 - 或者重建服务器文件夹本地!

因为我花了半个小时才弄清楚那些正确的开关是什么(比如通过 FTP 将远程文件复制到本地),所以我想在这里记录它们;因此上面的链接可以通过以下命令下载:

wget -nd -r -l 1 http://www.gnu-darwin.org/www001/src/ports/net/samba-libsmbclient/work/samba-3.0.28/source/libsmb/

... 在哪里:

   -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 [...]

   -r
   --recursive
       Turn on recursive retrieving.

   -l depth
   --level=depth
       Specify recursion maximum depth level depth.  The default maximum
       depth is 5.

如果能听到上述命令的替代方法就好了 - 也许使用不同的开关集wget- 或者使用curl或其他包......

答案1

过了一段时间,感谢@jw013的指点,以及与 Apache 服务器的目录列表同步 - Unix & Linux Stack Exchange,我终于找到了我的“终极”wget命令。

假设您在名为 的目录中有一个文件和目录树myfiles_dir,并让该目录可通过 上的 Apache 目录列表访问http://localhost/shared/myfiles_dir。然后,您可以使用以下方式在本地同步目录:

wget -r -N --no-parent --reject '*index.html*' -nH --cut-dirs=1 http://localhost/shared/myfiles_dir/

... 在哪里:

-r,  --recursive              specify recursive download.
-N,  --timestamping           don't re-retrieve files unless newer than
                              local.
-np, --no-parent              don't ascend to the parent directory.
-R,  --reject=LIST            comma-separated list of rejected extensions.
-nH, --no-host-directories    don't create host directories.
     --cut-dirs=NUMBER        ignore NUMBER remote directory components.

这会将内容下载到调用目录(工作目录)myfiles_dir中创建的子目录中,不包含任何残留文件。wgetindex.html

请注意,http 链接/地址后的尾部斜杠/非常重要:如果没有斜杠(例如),在从同一本地工作目录http://localhost/shared/myfiles_dir重复调用时,目录列表的 HTML 将被保存为多个副本,例如,等等,无论有何开关(尽管,根据要求,不会为内部的任何子目录保存 HTML 目录列表;此外,第一次运行该命令时,不会为保存 HTML 目录列表)。wgetmyfiles_dir.1myfiles_dir.2myfiles_dir

但是,如果尾部有斜杠 - 如- 在从同一本地位置重复调用后,http://localhost/shared/myfiles_dir/任何目录(包括“根目录”)的 HTML 目录列表都不会保存。myfiles_dirwget

答案2

另请参阅-nHaka--no-host-directories--cut-dirsoptions。我还经常使用--accept/-A--reject/ -R

相关内容