4,5年くらい前に自分の中で空前のsqliteブームがあったので、今もSQLite2のデータベースファイルを使ったアプリがいくつかある。
そういったDBの定期的なバックアップやVACUUMを行うスクリプトをcronで回してる。
もう2年くらい運用してるけど、問題なさそうなので公開。

1 6 1 * * /home/ha1t/scripts/backup_sqlite.rb /home/ha1t/dbs/blog.db

のように書けば、毎月一回、バックアップファイルを作って、VACUUMコマンドでファイルサイズを減らしてくれる。
ソースコードは以下。

require ‘fileutils’

##
# Sqlite2Backuper
#
class Sqlite2Backuper

def initialize(db_filename)
@db_filename = db_filename
end

def backup()

if !File.exist?(@db_filename)
puts(“#{@db_filename} not found.”)
return false
end

dst_filename = @db_filename + ‘_’ + Time.now.strftime(“%Y%m%d”)

if File.exist?(dst_filename)
puts(“#{dst_filename} found.”)
return false
end

FileUtils.cp(@db_filename, dst_filename)
end

def cleaning()
exec “echo ‘VACUUM;’ | sqlite #{@db_filename}”
end

end

if File.exist?(ARGV[0].to_s)
db_filename = ARGV[0]
else
db_filename = “blog.db”
raise(“invalid argument”)
end

backuper = Sqlite2Backuper.new(db_filename)
backuper.backup
backuper.cleaning

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ねこ認証:9つのパネルの中からねこを3匹選んでください