ruby根据修改日期复制文件

时间:2015-01-12 19:57:31

标签: ruby file copy

我有一个文件(具有不同的扩展名),每10分钟在Windows共享(A)上添加,并希望将它们复制到Linux服务器(B)并使用脚本对它们进行一些操作。
使用 ruby​​ FilesUtils 如何创建一个仅复制上次添加的文件的脚本(或者有一个将文件复制到的文件管理器)文件夹B,只要它们被添加到我的文件夹A)

更新这是我到目前为止所拥有的

require 'fileutils'
require 'time'

class Copier
  def initialize(from,to)
    puts  "copying files... puts #{Time.now} \n"

    my_files = Dir["#{from}/*.*"].sort_by { |a| File.stat(a).mtime }
    my_files.each do |filename|
       name = File.basename(filename)
       orig = "#{filename}"
       dest = "#{to}/#{name}"
       FileUtils.cp(orig, dest)
       puts "cp file : from #{orig} => to #{dest}"
    end
  end
end

Copier.new("/mnt/windows_share", "linux_folder")

但是每次调用它都会复制所有文件......

1 个答案:

答案 0 :(得分:1)

这就是我最后在最后10分钟内修改文件,然后将它们从Windows共享文件夹复制到linux文件夹中所做的事情:

require 'fileutils'
require 'time'

class Copier
def initialize(from,to)  
puts  "copying files... puts #{Time.now} \n"

my_files = Dir["#{from}/*.*"].select { |fname| File.mtime(fname) > (Time.now - (60*10)) })
my_files.each do |filename|
   name = File.basename(filename)
   orig = "#{filename}"
   dest = "#{to}/#{name}"
   FileUtils.cp(orig, dest)
   puts "cp file : from #{orig} => to #{dest}"
  end
 end
end

Copier.new("/mnt/windows_share", "linux_folder")