有没有办法在ruby中从Net :: SSH或NET :: SFTP命令修改日期?

时间:2010-04-20 20:34:05

标签: ruby-on-rails ruby ssh sftp net-sftp

是否有一种简单的方法可以使用Net :: SFTP来修改文件的日期?

能够做到这一点真是太好了:

Net::SFTP.start('some_server') do |sftp|
  sftp.dir.glob('*').each do |file|
    puts file.mtime
  end
end

但那是不可能的(据我所知)。

伯恩斯。

1 个答案:

答案 0 :(得分:9)

您的示例代码几乎就在那里,您只需要在file.attributes.mtime处使用file.mtime

另外,我猜测问题中的代码只是一个示例,但为了执行它,您还需要将用户名和密码传递给start并传递路径和模式到glob。所以一个有效的例子是:

Net::SFTP.start('some_server', 'mike', :password => 'secret') do |sftp|
  sftp.dir.glob('.', '*').each do |file|
    puts file.attributes.mtime
  end
end

mtime返回的值将是自纪元以来的秒数,因此您可能希望将其传递给Time.at以将其转换为Time对象。

如果你很好奇,其他可用的属性是:

  • permissions
  • uid
  • gid
  • size
  • atime(上次访问时间)