2/07/2011

rubyでtapを覚えたかも

そのうち綺麗にします
とりあえずtapを覚えた
ファイルのhash取り込みも

snapshot.rb





#!/usr/bin/env ruby
require 'date'


def get_conf(conf_file)
    conf = Hash[*open(conf_file).read.split(/\n/).map{|f| f.split}.flatten]
    return conf
end

class Snapshot
    def initialize(conf = "/etc/snap.conf")
        @snap = get_conf(conf).tap{|h| h.each_pair{|src, dst|
            _src = src.sub(/$\//,"").split(/\s*\/\s*/)
            if _src.size == 0
                h[src] = "#{dst}/rootfs_#{Time.now.strftime("%Y%m%d%H%M").to_s}"
            else
                h[src] = "#{dst}/#{_src[_src.size - 1]}_#{Time.now.strftime("%Y%m%d%H%M").to_s}"
            end
            }
        }
    end

    def do_snap
        @snap.each_pair {|src, dst|
        system("btrfs","sub","snap",src,dst)
        }
    end
end


if ARGV[0] == nil
    snap = Snapshot.new
else
    if File::ftype(ARGV[0]) == "file"
    snap = Snapshot.new(ARGV[0])
    else
    p "no such file"
    end
end

if snap != nil
    snap.do_snap
end 

No comments:

Post a Comment

WSKY Bluetooth 5.0 トランスミッター レシーバー買いました

安くレシーバーモードでapt-x HDが使えるものというと非常に限られますが そのなかで高音質と評判のよかったものをということで購入しました。 音質は安いなりですね、apt-x HDで接続されている状態でも元がなんであれ痩せた音になります。 SBSにしか対応していない...