【问题标题】:Getting the modification time of a file on a FTP server获取 FTP 服务器上文件的修改时间
【发布时间】:2013-08-02 15:21:26
【问题描述】:

我需要获取服务器上一组文件的修改时间。我知道如何在本地计算机上获取它,但 File.mtime 不能通过 FTP 工作。如何将此代码转换为在服务器上工作?

files_sorted_by_time = Dir['*'].select { |f| 
  ((Time.now - File.mtime(f)).to_i / 604800) < 7 
}

【问题讨论】:

  • File.mtime 适用于文件。你打算如何通过 FTP 使用它?
  • 我正在制作一个脚本,用于下载上周上传的flv文件,将其转换为mp4,然后重新上传。
  • 当你下载文件时,它会在你下载的那一刻被创建。一些 FTP 客户端会遇到从服务器获取修改时间并将其应用于下载文件的麻烦,但如果您在 Ruby 内部进行下载,则必须故意这样做。 FTP 的日期和时间格式几乎 标准,编写功能齐全的 FTP 客户端确实令人沮丧和困难。如果你能改用 SCP,你的生活会好很多。
  • @tadman 对我来说听起来不错。我只需要代码来完成工作。我该怎么办?
  • 你试过Net::FTP#mtime吗?

标签: ruby ftp last-modified


【解决方案1】:

你想要Net::FTP#mtime

文档示例:

Net::FTP.open('ftp.netlab.co.jp') do |ftp|
  ftp.login
  files = ftp.chdir('pub/lang/ruby/contrib')
  files = ftp.list('n*')
  ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
  ftp.mtime('file.pdf')
end

您可以使用#mtime#nlst 来过滤远程文件列表。

Net::FTP.open('ftp.netlab.co.jp') do |ftp|
  ftp.login
  ftp.nlst do |file|
    if ftp.mtime(file) # ...
  end
end

【讨论】:

  • 有没有办法获取服务器上文件的 mtime 并且只下载过去一周内的文件?
  • 我刚刚尝试了你给我的代码,它给出了一个巨大的错误。我在这里发布了代码和错误pastebin.com/Da97cJg4
  • 我删除了 ftp.login 行,但在 Net::FTP.open(bla, bla, bla) do |ftp| 行中仍然出现错误
  • 好吧,我教你一些我最喜欢的调试技巧in chat
  • 对不起,我的声望不够
猜你喜欢
  • 2011-10-26
  • 2015-02-20
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
相关资源
最近更新 更多