2014年2月14日 星期五

Ruby,檔案定期備份

我最近把資料庫系統換成了SQLite,直接放到RamDisk去執行。今天想要寫支程式,可以定時檢查RamDisk,裡面的sqlite檔有沒有變動,有變動就備份到硬碟去。於是使用Ruby寫下了:

FILE_TO_CHECK = ARGV[0]
FILE_TO_SAVE = ARGV[1]

if !File.exists?(FILE_TO_SAVE) 
  `cp #{FILE_TO_CHECK} #{FILE_TO_SAVE}` 
  exit
end

check_file = File.new FILE_TO_CHECK 
save_file = File.new FILE_TO_SAVE

if check_file.mtime > save_file.mtime
  `cp #{FILE_TO_CHECK} #{FILE_TO_SAVE}` 
end

不錯,不錯,想說這樣這隻程式可以放到crontab去,將來有同樣要檢查的檔案就編輯在crontab裡:

0 * * * * ruby /check_file.rb sinkfile sourcefile

不過做到這邊,突然想到,安裝rsync不就行了,直接

0 * * * * rsync sinkfile sourcefile

rsync就是檢查檔案有無更動,有更動的才會複製,而且它是這麼老牌又穩定的lib了,呵呵,沒關係,就當做是在練習使用vim編輯器

沒有留言:

張貼留言