lib/rbsync.rb in rbsync-0.0.7 vs lib/rbsync.rb in rbsync-0.0.8
- old
+ new
@@ -94,13 +94,15 @@
excludes = [] unless excludes
Dir.chdir(dir_name){
files = Dir.glob "./**/*", File::FNM_DOTMATCH
exclude_files =[]
exclude_files = excludes.map{|g| Dir.glob "./**/#{g}",File::FNM_DOTMATCH }
+ #files.each{|e|pp [e, File.directory?(e)] }
+ files = files.reject{|e| File.directory?(e) }
files = files - exclude_files.flatten
}
- files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }}
+ files = files.reject{|e| [".",".."].any?{|s| s== File::basename(e) }}
end
# compare two directory by name and FileUtis,cmp
def find_files(src,dest,options)
src_files = self.find_as_relative( src, options[:excludes] )
dest_files = self.find_as_relative( dest, options[:excludes] )
@@ -297,11 +299,10 @@
}
#コピーする
self.copy_r(files)
end
def copy_r(files)
- ##todo 進捗を調べる.
if(@conf[:progress])
puts ("copy #{files.size} files")
$stdout.flush
end
files.each_with_index{|e,i|
@@ -310,10 +311,11 @@
puts ("start #{i+1}/#{files.size}")
$stdout.flush
end
#main
copy_thread = Thread.start{
+ FileUtils.mkdir_p File.dirname(e[1]) unless File.exists?(File.dirname(e[1]))
FileUtils.copy( e[0] , e[1] ,{:preserve=>self.preserve?,:verbose=>self.verbose? } )
}
#progress of each file
progress_thread = nil
if(@conf[:progress])
@@ -465,5 +467,27 @@
out.print str
out.flush
end
end
+
+
+if __FILE__ == $0
+require 'tmpdir'
+require 'find'
+require 'pp'
+ Dir.mktmpdir('goo') do |dir|
+ Dir.chdir dir do
+ Dir.mkdir("old")
+ Dir.mkdir("new")
+ open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
+ time1 = Time.local(2008, 1, 1, 1, 1, 1)
+ File::utime( time1 , time1, "./old/test.txt")
+ rsync = RbSync.new
+ rsync.sync("old","new",{:update=>true})
+ # timestamp is preserved?
+ p File.mtime("./new/test.txt") == time1
+ p File.atime("./new/test.txt") == time1
+ end
+ end
+ puts :END
+end