【问题标题】:Using Bash To Recursively download the files from SFTP server使用 Bash 从 SFTP 服务器递归下载文件
【发布时间】:2016-11-24 07:24:20
【问题描述】:

我得到了一个 SFTP 服务器 IP 地址 |用户名 |密码。每天,SFTP 服务器可能有 N 个压缩包,格式为“2016_11_02_1.zip”。我知道,如何使用 cURL 下载文件。

$curl -u xxxxx:xxxxx sftp://x.x.x.x/path/to/2016_11_02_1.zip
$curl -u xxxxx:xxxxx sftp://x.x.x.x/path/to/2016_11_02_2.zip

现在,我将编写一个脚本来下载 SFTP 服务器上可用的 zip 文件( 2016_11_02_1.zip 、 2016_11_02_2.zip 、 2016_11_02_3.zip )。几个小时后,SFTP 服务器可能会添加2016_11_02_4.zip ..... 2016_11_02_30.zip.

如何在不下载已经下载的ZIP文件( 2016_11_02_1.zip , 2016_11_02_2.zip , 2016_11_02_3.zip )的情况下下载文件。

有什么建议吗?

【问题讨论】:

  • 你可以通过ssh访问服务器吗?如果是这样,那么我建议rsync
  • @Cyrus 是的,我可以通过 ssh 访问。我也会看看 rsync。

标签: bash curl sftp


【解决方案1】:

您还有以前下载的文件吗?如果是这样,您可以检查本地磁盘上是否已经存在具有该名称的文件。

【讨论】:

  • 是的,我将拥有以前下载的文件。现在,我将不得不比较本地磁盘和 SFTP 服务器上的文件。如果有任何共同点,请跳过并下载不存在的。
  • 听起来不错。那你能把我的答案标记为正确吗?
【解决方案2】:

如果 SFTP 是指安全 FTP,则可以只使用 rsync 支持 SSH(我认为 >=3.X),因为 SFTP 是 SSH 的一部分。示例:

rsync -av user@nowhere.com:/path/to/`date +%Y`*

【讨论】:

    最近更新 更多