Linux rsync

使用 Linux rsync 來遷移網站

Last Updated on August 15, 2023


rsync 是 Linux 系統上一個常被用來複製與備份檔案的工具程式,大部分的 Linux 發行版都已經內建 rsync,最好用的是可以處理本機或遠端的檔案同步工作,所以藉由 rsync 指令可以快速遷移網站資料將兩台主機資料同步。

早期網站遷移,最常用的方法,使用 FTP 程式將整個網站資料夾下載到本機,或使用 SSH 指令將網站打包下載。

如果網站資料不多,可以很快的遷移網站,網站運行有一段時間了,資料夾的資料加上圖片已經有 5G 或 20G 以上,再遇到網路速度不快的主機,網站遷移可能要花個 1 天都有可能。

WordPress Plugin

現在的 WordPress 遷移外掛都非常好用,如:WPvivid BackupUpdraftPlus Backup 這一類外掛,但遇上大型網站,遷移起來還是很吃力,備份 > 下載,再上傳到新主機 > 還原,需要花費大量時間。

如果你的主機允許使用 SSH 方式,使用 Linux rsync 文件同步 / 傳輸,增量備份來幫我們來網站遷移,時間上可以縮短不少。

rsync

VPS 主機安裝 rsync 程式:

CentOS / Fedora / RHEL

yum install rsync

Debian / Ubuntu

apt-get install rsync

rsync 網站遷移用法

A 主機是原本的主機,B 主機是要遷移網站過去的目的地主機。

B 主機,先建置一個空的網站,就可開始用下面的指令傳輸 A 主機 (原網站) 的文件了。

將 A 主機目錄同步傳輸到遠程 B 主機:

rsync -avu --progress --delete /home/wwwroot/example.com/ root@123.123.123.123:/home/wwwroot/example.com/

預設是 SSH 22 埠,如果 B 主機修改了 SSH 連接埠,需要加 -e “ssh -p 你的 SSH 連接埠”,如果不想顯示傳輸過程可以去掉 P 參數:

rsync -avu -e "ssh -p 20000" --progress --delete /home/wwwroot/example.com/ root@123.123.123.123:/home/wwwroot/example.com/

修改使用者權限

chown -R www:www /home/wwwroot/example.com/

網站遷移的時間可以縮短很多,接下來再來遷移你的資料庫文件。

MySQL

使用 root 帳號,登入 data_name 的資料庫

mysql -uroot -p data_name

mysql -h localhost -u root -p data_name

資料庫匯出

mysqldump -u root -p data_name > data_name.sql

要匯入的資料庫文件先上傳到根目錄 root/ 底下

資料庫匯入

mysql -u root -p data_name < /root/data_name.sql

最後

這一篇文章是我之前遷移網站的紀錄,舊瓶裝新酒重新整理的文章,因為,今天看到 Facebook 上有人分享使用 Migrate Guru 外掛遷移一個 118.90 GB 大小的網站 ,這是一個不可思議的事情,這可能需要花一天的時間來網站搬家。

Migrate Guru 是將原網站的資料,透過他的雲端平台,將網站遷移到你目的地主機,主機商的網路頻寬大小,決定你的遷移速度。

Photo by Gareth Davies on Unsplash


Share your thoughts