Pythonを利用したWordPress バックアップ
目次
All-in-One WP Migrationを利用したバックアップを定期的に取得しているのですが、 All-in-One WP Migrationは定期的なバックアップ設定ができないため。Pythonとseleniumを利用したWordPress バックアップを検討しました。
seleniumを利用してwebブラウザ経由で All-in-One WP Migrationのバックアップ操作を行います。
サンプルソースを下記に記載します。
from selenium import webdriver #seleniumのimport
from selenium.webdriver import Firefox, FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from _ast import If
def wordpressBackUp(wordpressSite,username,password):
# -----------------------------------------------------------------------------
# Firefoxのドライバ取得
# -----------------------------------------------------------------------------
#開始ログ
print('-------------------------------------------------------------')
print('◎'+wordpressSite)
print('-------------------------------------------------------------')
# -----------------------------------------------------------------------------
#ログイン画面へアクセス
# -----------------------------------------------------------------------------
options = FirefoxOptions()
options.add_argument('-headless')
browser = Firefox(options=options)
loginURL = wordpressSite + "/wp-login.php"
browser.get(loginURL)
time.sleep(3)
# "サイト名 ‹ ログイン"と表示される
print(browser.title)
# -----------------------------------------------------------------------------
#ログイン
# -----------------------------------------------------------------------------
browser.find_element_by_css_selector("#user_login").send_keys(username)
browser.find_element_by_xpath("//*[@id='user_pass']").send_keys(password)
browser.find_element_by_css_selector("#wp-submit").click()
time.sleep(5)
#"ダッシュボード ‹ サイト名 — WordPress"と表示される
print(browser.title)
# -----------------------------------------------------------------------------
#管理者メールアドレスの確認
# -----------------------------------------------------------------------------
if '管理者メールアドレスの確認' in browser.title :
browser.find_element_by_css_selector("#correct-admin-email").click()
time.sleep(20)
# -----------------------------------------------------------------------------
#バックアップ
# -----------------------------------------------------------------------------
loginURL = wordpressSite + "/wp-admin/admin.php?page=ai1wm_backups"
browser.get(loginURL)
time.sleep(5)
print(browser.title)
browser.find_element_by_css_selector("#ai1wm-create-backup").click()
time.sleep(60)
# -----------------------------------------------------------------------------
# ブラウザ終了
# -----------------------------------------------------------------------------
browser.quit()
print("終了しました。")
All-in-One WP Migrationでバックアップしたファイルは、WinSCPのコマンドラインでローカルPCにダウンロードします。
WinSCPのコマンドラインでローカルPCにダウンロードするコマンドは下記の通りです。
mkdir %sBackUpDirPath%
set sBackUpDay=[yyyymmdd]
rem ============================================================================
rem バックアップファイルダウンロード
rem ============================================================================
cd C:\Program Files (x86)\WinSCP
WinSCP.exe [接続設定] /console /command^
"option batch on" ^
"option confirm off" ^
"get [wordpressコンテンツを格納しているディレクトリ]/wp-content/ai1wm-backups/*%sBackUpDay%*.wpress [バックアップファイル格納先パス]" ^
"close" ^
"exit"
echo バックアップ完了
rem ============================================================================
rem バックアップファイルダウンロード
rem ============================================================================
move [バックアップファイル格納先パス]*.wpress %sBackUpDirPath%
echo バックアップ処理完了
pause
定期的な実行ができるように、OSのタスク追加を行えば完了です。