看到這標題,可以猜到,我會筆記,大概就是「不怎一般」的方法了!哈

WordPress.com 商務版本支援安裝外掛,可以說是自訂性最高的方案。

但是礙於安全性考量,整個 WordPress 運行環境都有特殊處理,像是:

  1. WordPress Core 另外目錄放置,且有對功能刪減過,屬於閹割版
  2. 有開放 SFTP 權限上傳下載檔案,但
    2.1. 看不到除了 wp-content 之外的 WordPress 資料夾,也就是保護了 Core 的部分,這設計不錯!
    2.2. 所有 Automattic 或相關合作公司的外掛與主題檔案都是採用 Symbolic Link 超連結方式掛載,看得到但抓不到。

外掛備份

既然可以上傳外掛,那自己上傳備份外掛,打包網站下載回來還原可不可以?

可以,但因為環境限制,會打包到不完整的 WordPress 檔案。自己要去補完!

SFTP 能把整個目錄抓下來,不過要花超久時間又不完整,非常不推薦。

透過外掛備份還原轉 WordPress.org 有條件可以較無痛完成:全站都是英文內容、外掛與主題都沒使用到 Automattic 的商務方案內容。

那這樣還要用「商務版」幹嘛?XD

內建備份

商務版本提供定時備份與匯出的功能,可以登入 WordPress.com 後台「工具」中找到「活動和備份」。

WordPress.com 備份

點選備份時間點,選擇下載後會出現下載連結。

WordPress.com 備份下載

抓下來的檔案包含:

  1. 資料庫各表的多檔匯出(wp_options, wp_users...)
  2. wp-content 資料夾(除商務版本的主題與外掛,含免費的 Automattic 外掛與主題)
  3. wp-config.php,他們系統用,自架版本用不到,也無參考價值

網站備份還原

WordPress 網站要還原只要有: 檔案部分(WordPress Core 核心檔案、資料庫與系統設定檔案 wp-config.php、使用者放置內容的 wp-content)與資料庫部分 。

檔案部分

由於備份的核心檔案有刪減,不可用,所以自己從 WordPress.org 下載回來解壓縮,作為主架構使用。

再來是 wp-config.php 檔案,複製其他網站的這檔案,把資料庫資訊改過對應,能連線到指定資料庫就沒問題了。

最後系統檔案部分的操作就剩把備份的 wp-content 資料夾取代原本核心內建的版本。

注意,這邊要小心是否有使用到商用版的外掛或主題,備份裡不提供,要自己分別去買授權取得原始碼來放置。

資料庫部分

外掛備份直接還原的資料庫會有編碼問題不能用,而商務方案提供的備份檔案輸出是 UTF8 編碼,但 MySQL Schema 裡卻是用 CHARSET=latin1 ,直接匯入也會導致編碼問題,所以要稍微「調整」一下。

  1. 先把所有 SQL 檔案整合。

    cat *.sql > merge.sql
  2. 改變 Schema 編碼定義為 UTF8。

    sed -i "" "s/CHARSET=latin1/CHARSET=utf8/g" merge.sql
  3. 由於 WordPress.com 的 MySQL 版本並不新,與我匯入 MySQL 8 的時候會有 datetime 格式的問題,還需要先使用指令避開錯誤。

    SET SQL_MODE='ALLOW_INVALID_DATES';
  4. 最後處理才是把整合好的資料庫檔案匯入,完成!

後記

整體來說,備份與還原建議的組合是:商務方案內建的備份,然後自己手動整合還原。

雖然這個還原還是有些許問題要克服,像是儲存在資料庫裡的網站路徑是 http://www.mxp.tw 但內容裡存的資源路徑是 https://www.mxp.tw ,以及網站標題與描述不是記錄在備份資料庫裡,所以匯入的備份中欄位是空的要補回去....等等,偏向資料庫紀錄內容對應環境的部分。

但對比非商務版本的匯出功能只能把內容取出,商務版本搬家移轉能到這樣程度,那剩下的問題其實已經算很小了。

這份操作記錄是針對一個電商的客戶處理,網站還原的幾乎就像原本還在 WordPress.com 裡,很是無痛的切換。

若是照網傳的從後台「工具」裡使用「匯出程式」只把內容轉出,那後續一堆外掛和主題設定就頭痛了,相當於重建一個網站。

沒特別研究還有沒有更簡單的做法,如果有人知道也歡迎留言分享~

能玩到商務版本的轉移感覺也是解開一個成就啊!真有趣!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *