2013-08-02 3 views
2

Мне нужно получить время модификации группы файлов на сервере. Я знаю, как получить это на локальном компьютере, но File.mtime не работает через FTP. Как мне преобразовать этот код для работы на сервере?Получение времени модификации файла на FTP-сервере

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

'File.mtime' работает с * файлами *. Как вы собираетесь использовать это через FTP? – tadman

+0

Я делаю скрипт, который загружает FLV-файлы, которые были загружены на прошлой неделе, преобразует их в mp4 и повторно загружает их. – Chase

+0

Когда вы загрузите файл, он будет создан в тот момент, когда вы его загрузите. Некоторые FTP-клиенты сталкиваются с проблемой получения времени модификации с сервера и применения его к загруженному файлу, но это нужно делать намеренно, если вы выполняете загрузку внутри Ruby. FTP имеет почти * ноль * стандарты для форматирования даты и времени, написав полнофункциональный FTP-клиент, действительно разочаровывающий и сложный. Если вы можете использовать SCP, ваша жизнь будет неизмеримо лучше. – tadman

ответ

4

Вы хотите 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 
+0

Есть ли способ получить mtime файлов на сервере и загружать только те, что были на прошлой неделе? – Chase

+0

Я просто попробовал код, который вы мне дали, и это дало огромную ошибку. Я отправил код и ошибку здесь http://pastebin.com/Da97cJg4 – Chase

+0

Я удалил строку ftp.login, но у меня все еще есть ошибка на линии с Net :: FTP.open (bla, bla, bla) do | ftp | – Chase

 Смежные вопросы

  • Нет связанных вопросов^_^