使用 wget 或其他方式从 ftp 服务器获取最新文件

使用 wget 或其他方式从 ftp 服务器获取最新文件

如何使用 wget 下载 ftp 服务器中可用的最新文件。如果我使用以下命令,它将提供所有文件。

获得ftp://id:密码@ftp服务器/目录/*

此致敬礼,拉姆。

答案1

只需在 wget 中添加“-N”选项即可忽略比本地文件更旧的文件。您还可以添加“-nc”以完全跳过已存在的文件,即使 FTP 上的文件较新。

wget -Nftp://id:密码@ftp服务器/目录/*

答案2

答案是您可能无法仅使用 wget 或我所知道的任何其他单一工具来执行此操作。

您可能需要做的是编写一个脚本,该脚本将使用 wget/curl/whatever 从 ftp 服务器请求目录列表。然后,该脚本将根据文件的名称或其他一些条件选择并检索正确的文件。

答案3

我的解决方案是这样的:

curl 'ftp://server.de/dir/'$(curl 'ftp://server.de/dir/' 2>/dev/null | tail -1 | awk '{print $(NF)}')

答案4

也许我的非理想但简单的解决方案对某些人有用。

首先,我已经安装了proftpd。这里是 /ftp 目录树示例:

/ftp/
/ftp/file1
/ftp/file1/subfile1
/ftp/file1/subfile2
/ftp/file2

然后我添加了任务定时任务每分钟执行此脚本:

PACKAGES=$(find /ftp/* -type d -not -name 'lost+found')
for PACKAGE in "${PACKAGES[@]}"; do
  echo $(ls -I 'latest' -Atp "${PACKAGE}" | grep -v '/' | head -n 1) > "${PACKAGE}"/latest
done

因此,对于每个文件(或我的情况中的包),您需要创建单独的目录,并且将有文件“latest”,其中包含该目录中最新文件的名称。如果您想获取某个文件的最新版本,那么您只需执行命令即可:

wget ftp://"${FTP_SRV}"/"${FILE}"/$(curl -s ftp://"${FTP_SRV}"/"${FILE}"/latest)

相关内容