如果您是 SFS3 的使用者,架了 SFS3U ,資料當然得轉移過來才有意義呀!
把資料搬到 SFS3U 主機,前提是,先把 SFS3U 主機架好!
請參考前一篇文章 https://n.sfs.tw/content/index/12362 架好 SFS3U 專用的主機。
接下來,你要做的只有三件事,但每一件都有若干步驟,請小心操作:
1. 把 SFS3 資料庫搬到 SFS3U 主機內
(1)利用 SFS3 的 system_utf8 模組,產出 utf8mb4 編碼的資料庫
注意!在轉碼過程中,可能會發生失敗情形,原因通常就是Maria DB (即MySQL) 預設 index 的欄位長度為 767bytes,由於這裡要產出 utf8mb4 編碼的資料庫,每個字元佔4bytes,sfs3中有些 table 的 key 設定較複雜,會發生欄位長度不足的情況而使轉檔過程中斷。
請利用 root 登入 sfs3 主機,並編輯 /etc/my.cnf 檔,加入以下設定值
max_allowed_packet = 100M (加入這行,可以讓轉碼時每次處理 5000筆以上,加快速度)
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
參考 https://n.sfs.tw/content/index/12360 的 (13) 點說明,不要填錯位置。
改完 my.cnf ,記得重啟 mysql 服務。(注意!你的重啟指令可能不同)
(2)利用 root 登入原 SFS3 主機,並利用 mysqldump 把該資料庫匯出成 sql 檔
上面的指令,是假定你利用 system_utf8 產生資料庫時,使用的資料庫名稱是預設的 sfs3_utf8mb4
(3)利用 ssh 指令把該 sql 檔傳到 SFS3U 主機 (範例中是假設 sfs3u 主機位在 163.17.43.23,您要改成自己的 IP)
(4)利用 root 登入 SFS3U 主機,並把 sql 檔匯入 MySQL 資料庫
(這裡別弄錯!要換登入到 SFS3U 主機哦!不是在 SFS3 主機貼這個指令!!)
#mysql -uroot -p –default-character-set=utf8mb4 sfs3u < /root/sfs3u.sql
2. 把 SFS3 主機中,sfs3 底下的 data 目錄搬到 SFS3U 主機中 sfs3u 目錄,覆蓋原有的 data 目錄
(1)利用 root 登入原 SFS3 主機,並利用 tar 打包 sfs3 的 data 目錄
#tar zcvf data.tar.gz data
(2)利用 ssh 指令把該 壓縮檔傳到 SFS3U 主機 (範例中是假設 sfs3u 主機位在 163.17.43.23,您要改成自己的 IP)
(3)利用 root 登入 SFS3U 主機,並把該壓縮檔解開覆蓋 sfs3u 底下的 data 目錄
(這裡也別弄錯!要換登入到 SFS3U 主機哦!不是在 SFS3 主機貼這個指令!!)
#tar zxvf /root/data.tar.gz
#chmod -R 777 data
考量到 data 目錄中可能會有中文檔名的問題,如果直接用 tar 打包,再用 scp 傳過去解開,那些中文檔名都會變亂碼。(因為環境編碼由 big5 變 utf-8 了)
感謝本市立新國小資訊組長提供解法,只要利用 rsync 指令就能解決 (舊主機是 CentOS 5, CentOS6, CentOS7皆可適用)
方法就是以 ssh 登入 SFS3U 主機,然後下這個指令 (不是照著貼就好,該改成自己的就要改!)
參數 --iconv=UTF-8,BIG5 的意思就是舊主機環境是 BIG5 ,取回資料後轉換成 UTF8 編碼的檔名
sfs3_ip是指你舊的 sfs3 主機的 ip 喔!記得要修改。
注意!上面的指令中,也是假定你的舊的 sfs3 的 data 目錄位在 /var/www/html/sfs3/data/ ,如果有不同,要自行更改。
2018.07.23 補充 感謝嘉義縣網老師提供解法參考
有關「 data 目錄中可能會有中文檔名的問題,如果直接用 tar 打包,再用 scp 傳過去解開,那些中文檔名都會變亂碼。」的問題
提供另一種解法參考
1.安裝convmv
yum install convmv
2.執行檔名轉碼
convmv -f big5 -t utf-8 -r /var/www/html/sfs3u/data/* --notest
-f 原始編碼
-t 要轉的編碼
-r 遞迴
--notest 真的轉碼(不然只是測試)
3. 後續已知問題處理 (以下假定您的 sfs3u 安裝在 /var/www/html/sfs3u/ 裡)
由於 data 目錄的資料是來自原 SFS3 主機,裡面有些東西和字碼有關的,是使用 big5 字碼,所以在 SFS3U 中可能會變成亂碼,目前已知至少有三個地方要修正。
將來若再有發現問題,會更新這個網頁。
(1)修正連結列
(2)刪除製作成績單模組的成績單備註文字 (會自動使用預設值重建)
(3)刪除匯入讀卡成績這個模組的匯入成績暫存檔
這裡,因為檔名是亂碼,所以要用 * 代表所有檔案,逐一自行按 y 刪除。