設定フォルダをバックアップ取りたい。N世代のバックアップを取る方法は幾つもあるし、
1日毎にバックアップを取得するならコマンドで済む
毎日のバックアップ
rsync -a /var/www /var/back/`date -I`/
コレだと、ファイルを作りすぎるので直近5件だけでいい。
直近五件をスクリプトでやる
def backup_generation(src, backupdir,n=5)
dist = File.expand_path(backupdir)
src = File.expand_path(src)
name = File.basename(src)
cmds = []
(n-1).times{|i|
cmds << "mv #{dist}/#{name}.#{i}.tgz #{dist}/#{name}.#{i+1}.tgz" if File.exists? "#{dist}/#{name}.#{i}.tgz"
}
cmds.reverse!
cmds << "tar cvzf #{dist}/#{name}.0.tgz #{src}"
puts cmds
cmds.each{|cmd|
`#{cmd}`
}
end
crontab は管理が面倒なのでDaemonにした
Crontab は登録したことを忘れるので、init.d に登録して自動起動にする。
Daemonsをつかうとinit スクリプトになるので重宝している。
require 'daemons' dir = File.expand_path(Dir.pwd) worker = Proc.new{ loop{ backup_generation("#{dir}/exmample.com/","#{dir}/../www.back") sleep 60*60*24*3 } } Daemons.run_proc("www_backup",&worker)