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

bte*_*les 3 ruby ssh sftp ruby-on-rails net-sftp

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

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

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

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

伯恩斯.

mik*_*kej 10

您的示例代码几乎就在那里,您只需要使用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
Run Code Online (Sandbox Code Playgroud)

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

如果你很好奇,以同样的方式提供的其他属性是:

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