>>411
1. ローカルのファイル構成をリモートのファイル構成と同じにしたい
2. できる限りローカルのファイルの再配置で転送量を削減したい
ってことだよね。別解でこんなのどう?
#!/usr/bin/ruby
# Usage: treesync this.lst that.list
# - this.lst のファイル構成を that.lst の構成に work/ 以下で再構成するシーケンスを出力する
# - this.lst/that.lst は共に find ... -type f -print | xargs md5sum > this.lst などと生成
src_p2h = Hash[*open(ARGV.shift).read.split.reverse]
dst_p2h = Hash[*open(ARGV.shift).read.split.reverse]
src_h2p = Hash[*src_p2h.to_a.flatten.reverse]
dst_p2h.each do |path, hash|
 puts "mkdir -p `dirname work/#{path}`"
 if src_h2p[hash]
   puts "ln #{src_h2p[hash]} work/#{path}"
 else
   puts "remote-get #{path} work/#{path}"
 end
end
これでローカルのa/ツリーを元に、work/フォルダ以下に最小転送量で
リモートのb/ツリーに同期したフォルダを再構成する。remote-getコマンドは自分で用意。