MT の DB を自動バックアップ & Vacuum

シェアする

Python の勉強用に、MT の DB のバックアップと Vacuum を行うスクリプトを書いてみた。例外処理がいい加減だが。これを cron に登録すれば自動で行うはず。(まだやってない)

#!/usr/bin/python
from ftplib import FTP
from datetime import date
from pysqlite2 import dbapi2 as sqlite
import shutil
import os
import sys

hostName     = 'SERVER_URL'
userName     = 'USERNAME'
passWord     = 'PASSWORD'
sqlitePath   = 'DBPATH' # リモートのDBが置いてあるパス
sqliteFile   = 'DBFILENAME' # DBのファイル名
sqliteFileBk = 'sqlite.db.bk.' + date.today().strftime("%y%m%d") # バックアップ名

def vacuumSQLite(dbName) :
	sqlConnect = sqlite.connect(dbName)
	sqlConnect.execute('vacuum')
	sqlConnect.close()

# 同名のファイルがあったら一応削除 バックアップも同じ
if os.access(sqliteFile, os.F_OK) :
	os.remove(sqliteFile)

if os.access(sqliteFileBk, os.F_OK) :
	os.remove(sqliteFileBk)

try :
	ftp = FTP(hostName)
	ftp.login(userName, passWord)
	ftp.cwd(sqlitePath)
	ftp.retrbinary("RETR " + sqliteFile, open(sqliteFile, 'wb').write)
	shutil.copyfile(sqliteFile,sqliteFileBk)
	vacuumSQLite(sqliteFile)
	ftp.storbinary("STOR " + sqliteFile, file(sqliteFile,'r'))
	ftp.quit()
except : # 超適当
	print sys.exc_info()[0]

このスクリプトを適当名前で保存して、cron に登録すればOK. 期間は週1ぐらいかな、記事の多さ次第だろうね。ちなみに os.chdir() で DB のディレクトリに移動させて処理しようとしたら、sqlite.connect() でフリーズしたので無し。そのかわり cron で起動するときに cd させる。

始めて Python で組んだけど、import めんどい以外は見た目がすっきり綺麗でわかりやすくていいね。日本だと人気ないのか、周りに使ってる人がいないのが残念というかイイ所というか。積極的に使っていきたい。

Sponsored Link

シェアする

フォローする