開発したアプリなど一覧

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

コメント

タイトルとURLをコピーしました