Bash脚本用于检查FTP上的文件是否在过去24小时(1天)内被修改,并且仅在其已更改时才下载

时间:2017-09-26 10:48:27

标签: bash ftp

我可以访问FTP服务器,客户端每周上传两次更新的文件。我必须编写一个bash脚本来检查文件(我知道文件的名称)是否在过去24小时内被修改:如果是,那么我需要下载该文件。

我能够正常使用bash脚本从FTP下载文件,但我不知道如何检查FTP中的上次修改时间。

2 个答案:

答案 0 :(得分:0)

在大多数情况下,FTP ls命令链接到服务器ls命令。所以你应该试试

ls -l <filename>

答案 1 :(得分:0)

使用-z/--time-cond选项,最简单的方法可能是curl

  

(HTTP / FTP)请求在给定时间和日期之后修改的文件,或者在此之前修改过的文件。可以是各种日期字符串,或者如果它与任何内部字符串不匹配,则将其视为文件名并尝试从中获取修改日期(mtime)。有关日期表达式的详细信息,请参见curl_getdate(3)手册页。

接受的日期格式在curl_getdate docs中指定,但只需支持通常的英文 - 自然RFC-822格式,date util也支持{{1} } / -R选项。

我们可以使用相对--rfc-2822字符串计算24小时前截止时间戳的日期/时间:

date

并将该值提供给$ date -R -d '24 hours ago' Mon, 25 Sep 2017 17:30:49 +0200

curl

要将输出直接保存到本地文件(而不是将其输出到stdout),请使用curl 'ftp://server/file' --time-cond "$(date -R -d '24 hour ago')" 选项,要禁止进度输出,请使用--output filename选项。