WordPress Website Recovery

WordPress Website Recovery

備份-Backup

我的狀況是原本使用DigitalOcean的伺服器架站,遭受攻擊後被官方關閉網路,官方推薦解決方法就是架新機器把資料從舊機器搬過去。

所以這裡我們只要來備份Wordpress的資料庫就行了

先用mysqldump把wordpress的資料庫匯出

mysqldump -u username -p dbname > dbname.sql

你要只匯出某個table也行(只有wp_posts和wp_postmeta這兩個table是必要)

mysqldump -p --user=username dbname tableName > tableName.sql

接下來我們要架設一個新的Wordpress個人網站,之後再將舊資料庫的資料放進去就好。可以參考這篇利用DigitalOcean架設Wordpress個人網站(Ubuntu 18.04)

架好後我們要來開始搬資料,前面我們已經備份好了資料庫,所以現在我們要將舊機器用Recovery ISO來開機

進到你機器裡的Recovery選項,選擇Boot from Recovery ISO

先將舊機器關機

sudo poweroff

再將右上角的power打開後用console進入

應該會看到:

This droplet is booted to the DigitalOcean recovery environment.
When you are finished, you may set your Droplet to boot from
the local disk again via the DigitalOcean control panel.

This rescue environment is based on Ubuntu 18.04.

* Network access and SSH have been enabled automatically *
* SSH Host keys do NOT match while using this rescue system *

Root Password has randomly been set to:
  exam-ple0-1234-5678
Your are strongly encouraged to use SSH keys. To import your SSH
public keys:
  From Github:        ssh-import-id gh:<Github user name>
  From Launchpad.net: ssh-import-id lp:<launchpad user name>
--------------------------------------------------------------------
1. Mount your Disk Image [Not Mounted]
2. Check Filesystem
3. Reset Droplet Root Password
4. Configure Keyboard
5. Attempt to 'chroot' into installed system
6. Interactive Shell [/bin/bash]
Choose (1-6) and press Enter to continue.

選1. Mount your Disk Image後,這時你再進新機器的root帳號(因為等等要把備份資料庫倒進新的機器上的mysql)

在新機器上用sftp把舊資料抓回來

sftp root@your_old_server_ip_or_remote_hostname

密碼在你使用recovery mode後他會給你一組新的,每次開機都會變

進去後請到/mnt底下去拿資料,

cd /mnt
get remoteFile
get -Pr remoteDirectory

請至少把wp_posts.sql和wp_postmeta.sql和wordpress/wp-content/uploads資料夾,這裡我是直接將舊的wordpress整個打包,產生一個wordpress.sql

get wordpress.sql
get -Pr wordpress/wp-content/uploads

之後離開sftp,先替舊的wordpress資料創一個資料庫

sudo mysql -u root -p
CREATE DATABASE wordpresstemp DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
exit;

再把wordpress.sql倒進wordpresstemp資料庫中

 mysql -u root -p wordpresstemp < wordpress.sql

這時候可以打開phpmyadmin操作把兩張table(wp_posts和wp_postmeta移到新的wordpress資料庫)

點wordpresstemp(舊資料庫)裡要複製的表(wp_posts和wp_postmeta),後點操作

因為新的wordpress資料庫裡也有wp_posts和wp_postmeta這兩張表,所以你可以先把這兩張表分別改成wp_posts_backup和wp_postmeta_backup,再複製舊的表過去,我在執行的的時候會遇到他說無法順利複製因為post_date_gmt裡不允許0000-00-00 00:00:00的值,我的解決辦法是回phpmyadmin首頁後點”變數”然後找到”sql mode”點”編輯”把裡面的”NO_ZERO_DATE”移除掉,這樣應該就能順利複製table了。

複製好後,記得還要將舊的uploads資料夾底下的東西搬到新機器上的uploads資料夾裡(可能要稍微注意一下權限)

mv old_wordpress/wp-content/uploads/* /var/www/html/wordpress/wp-content/uploads/

複製wp_posts跟wp_postmeta的步驟是一樣的,最後再回頭打開http://ip_or_your_domain,應該就能看到你的舊文章、圖都回來了QQ,不過分類的部分可能就要重新分了。

稍微檢查一下所有文章大致都沒問題,可以把舊機器放幾天再刪除。還沒域名的可以參考這篇HOW TO REGISTER A NEW DOMAIN,如果你已經有購買域名,記得把舊的ip改成新的ip,應該6個小時左右就好了,等域名ip更改生效後我們就可以準備來用SSL憑證了! 可以參考這篇Configuring Let’s Encrypt SSL Certificate for Nginx on Ubuntu 18.04

發佈留言

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