【问题标题】:wget to download new wildcard files and overwrite old oneswget 下载新的通配符文件并覆盖旧的
【发布时间】:2014-12-15 10:37:27
【问题描述】:

我目前正在使用 wget 从远程服务器下载特定文件。这些文件每周更新一次,但始终具有相同的文件名。例如,新上传的 file1.jpg 将替换本地 file1.jpg

这就是我抓住它们的方式,没什么特别的:

wget -N -P /path/to/local/folder/ http://xx.xxx.xxx.xxx/remote/files/file1.jpg

这会从远程服务器下载 file1.jpg,如果它比本地版本新,然后用新版本覆盖本地版本。

问题是,我每周要为 100 多个文件执行此操作,并且已设置 cron 作业以在特定时间触发 100 个不同的下载脚本。

有没有一种方法可以使用通配符作为文件名,并且例如只有一个每 5 分钟触发一次的脚本?

类似......

wget -N -P /path/to/local/folder/ http://xx.xxx.xxx.xxx/remote/files/*.jpg

这行得通吗?它会检查所有当前文件名的本地文件夹,看看有什么新的,然后只下载并覆盖新的吗?另外,它在远程服务器上下载部分上传的文件有什么危险吗?

我知道在服务器之间使用某种文件同步脚本会是更好的选择,但它们的设置看起来都相当复杂。

非常感谢!

【问题讨论】:

    标签: linux cron download ubuntu-12.04 wget


    【解决方案1】:

    您可以在文本文件中一一指定要下载的文件,然后使用选项-i--input-file 传递该文件名。

    例如list.txt的内容:

    http://xx.xxx.xxx.xxx/remote/files/file1.jpg
    http://xx.xxx.xxx.xxx/remote/files/file2.jpg
    http://xx.xxx.xxx.xxx/remote/files/file3.jpg
    ....
    

    然后

    wget .... --input-file list.txt
    

    或者,如果您的所有 *.jpg 文件都从特定 HTML 页面链接,您可以使用递归下载,即让 wget 跟随您页面上的链接到所有链接的资源。您可能需要限制“递归级别”和文件类型,以防止下载过多。请参阅wget --help 了解更多信息。

    wget .... --recursive --level=1 --accept=jpg --no-parent http://.../your-index-page.html 
    

    【讨论】:

    • 感谢您的回复。 1) 不,文件没有从 html 页面链接,因此该选项与我无关。 2)无论远程文件是否比本地文件更新,您的第一种方法不是每次我触发脚本时都简单地下载所有这些文件吗?或者会使用 wget -N 解决这个问题?它还会以这种方式下载部分文件吗?
    • 是的,对于选项 1,您将需要现有选项 -N 不下载,除非更新,-P 用于输出前缀,可能还有其他选项您已经拥有。我的意思是用....
    • 好极了,到时候试试看。再次感谢;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多