設定フォルダをバックアップ取りたい。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)