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 めんどい以外は見た目がすっきり綺麗でわかりやすくていいね。日本だと人気ないのか、周りに使ってる人がいないのが残念というかイイ所というか。積極的に使っていきたい。