Pythonを利用したWordPress バックアップ

投稿者: | 2021年5月24日

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("終了しました。")


バックアップファイルのローカルPCへのダウンロード


 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のタスク追加を行えば完了です。

関連記事