【问题标题】:Downloading files from sftp newer than x date with ruby使用 ruby​​ 从 sftp 下载比 x 日期新的文件
【发布时间】:2014-02-25 23:01:50
【问题描述】:

我需要每晚通过 sftp 下载新文件。该目录中目前有成千上万个文件(我无法控制),并且希望能够将我必须抓取的文件限制为比我上次运行此过程时更新的文件。

我知道我可以很容易地通过 ssh 做到这一点,但是我还没有看到只用 sftp 做到这一点的方法。除了遍历每个文件并检查 attributes.mtime 之外,我还有其他选择吗?

示例:

Net::SFTP.start('sftp.host.com', 'username', :password => 'password') do |sftp|
  sftp.dir.glob('prefix.', '*').each do |file|
    if Time.at(file.attributes.mtime) > last_process_time
      sftp.download!(file, "some/local/path/")
    end
  end
end

【问题讨论】:

    标签: ruby sftp ruby-2.0


    【解决方案1】:

    与 rsync 的(明显)比较(通过 ssh,但是..duh):

    您的代码仅比较时间戳,rsync 还检查文件大小和可选校验和。它还在两侧创建文件列表并进行比较。然后它开始传输不同步的文件。不确定 rsync 是否使用多个同时下载的文件。而且 rsync 可能会做很多更聪明的事情。 (source)

    也许其中一些 rsync 特性可用于仅使用 sftp 构建更快的同步系统。多个同时下载对我来说似乎是一个立竿见影的胜利。

    您能否将同步时间结果与 rsync 时间进行比较(如果需要,请创建开发设置)?因为我认为,一旦您完成了上述一些事情,剩下的就是 sftp 协议的一些开销。

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 2018-08-31
      • 2014-07-05
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2019-03-14
      相关资源
      最近更新 更多