這次遷移的主要任務是將一個運行 MCSManager 的伺服器從一台 Debian 伺服器遷移到另一台新的 Debian 伺服器,具體涉及以下內容:
- Minecraft 伺服器:包括三個服務端:
- Velocity 代理服務端
- Purpur 登錄服
- Leaves 生存服
- 機器人服務:
- 基於 Nonebot / Koishi 框架、使用 OneBot v11 協議的機器人
- 使用官方 QQ 接口的機器人
也對新伺服器進行了優化配置,包括安裝 1Panel 面板、設置 Zsh 終端以及引入插件管理器 Zinit。
這次遷移不僅是一次基礎環境的複製,更是一次技術堆棧的迭代~
數據遷移#
使用 rsync 提高傳輸效率#
在遷移過程中,我最初嘗試使用 scp
進行數據傳輸,但發現傳輸速度不夠理想。因此,我改用 rsync
,它支持增量同步並顯示傳輸進度,同時在傳輸效率和靈活性上表現更佳。
執行的完整命令如下:
rsync -avz --progress --exclude="Config/" ***@192.168.*.*:/opt/mcsmanager/daemon/data/ /opt/mcsmanager/daemon/data/
-a
:歸檔模式,保留文件權限、時間戳等元數據。-v
:顯示詳細輸出。-z
:壓縮數據傳輸。--progress
:顯示傳輸進度。--exclude="Config/"
:排除特定目錄。
通過這條命令,我實現從舊伺服器到新伺服器的數據同步,整個過程穩定、高效。此外,rsync
的增量更新特性非常適合需要多次調試遷移的場景,可以顯著減少重複數據的傳輸時間。
1Panel 的安裝與使用#
什麼是 1Panel#
1Panel 是一款現代化的開源 Linux 運維管理面板,旨在通過簡化操作提高伺服器管理效率。它具有以下主要優勢:
- 高效管理:通過 Web 圖形界面實現主機監控、文件管理、數據庫管理等功能。
- 快速建站:深度集成開源建站工具,如 WordPress 和 Halo,支持一鍵域名綁定和 SSL 配置。
- 應用商店:提供豐富的高質量開源工具和應用軟件,用戶可以快速安裝並升級。
- 安全可靠:內置防火牆、日誌審計功能,提升系統安全性,同時採用容器技術減少漏洞暴露。
- 一鍵備份:支持備份至本地或雲端,輕鬆實現數據安全保障。
安裝步驟#
安裝 1Panel 的過程十分簡單,使用以下命令即可完成:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
遷移#
- MariaDB
- phpMyAdmin
- Koishi
- Qinglong
- DDNS-Go
- Uptime-Kuma
- Alist
- Redis
這些的遷移都特別的簡單,無非就是一個一個用 rsync 傳輸 /opt/1panel/apps 裡面的內容
如果實在太懶,建議直接 /opt/1panel 遷移整個目錄過去,實測可行(
如果你對其中一個遷移感興趣請留言吧,或許我會再出一篇文章呢
Zsh 終端的配置#
為什麼是 Zinit#
在為新伺服器配置終端時,我選擇了 Zinit 作為 Zsh 的插件管理器,而沒有使用常見的 Oh My Zsh。原因在於 Zinit 的輕量化和高性能。相比 Oh My Zsh,Zinit 的插件加載速度更快,不會影響終端的啟動時間。
Zinit 可以理解為 Zsh 的 "vim-plug",而 Oh My Zsh 則更像是一個完整的框架(類似 SpaceVim)。這種輕量化的特性讓我可以根據需要靈活定制終端環境,而不必引入額外的冗餘功能。
安裝 Zsh#
首先,我使用以下命令安裝了 Zsh:
apt install zsh
安裝 Zinit#
接著,我運行以下命令安裝 Zinit:
bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"
安裝完成後,我在 .zshrc
文件中添加了如下配置,以加載常用插件(直接加!會自動下載的):
# zsh 套件四天王
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-history-substring-search
zinit light zdharma-continuum/fast-syntax-highlighting
zinit light romkatv/powerlevel10k
# Oh My Zsh 功能
zinit snippet OMZ::lib/completion.zsh
zinit snippet OMZ::lib/history.zsh
zinit snippet OMZ::lib/key-bindings.zsh
zinit snippet OMZ::lib/theme-and-appearance.zsh
# key binding
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey ',' autosuggest-accept
# 其他
zinit load djui/alias-tips
插件功能詳解#
-
zsh-users/zsh-completions
:
擴展 Zsh 的自動補全功能,支持對常用工具(如git
、docker
)的高級補全,提升輸入效率。 -
zsh-users/zsh-autosuggestions
:
提供實時命令建議,基於歷史記錄和上下文自動補全,減少重複輸入。 -
zsh-users/zsh-history-substring-search
:
支持通過子字符串快速搜索歷史命令,結合鍵綁定功能讓歷史查詢更加便捷。 -
zdharma-continuum/fast-syntax-highlighting
:
實現命令語法高亮功能,錯誤命令會標紅,正確命令標綠,幫助快速定位輸入錯誤。 -
romkatv/powerlevel10k
:
一款高性能的終端主題,提供豐富的視覺效果和信息展示(如 Git 狀態、網絡狀態等),並且加載速度極快。 -
OMZ::lib/completion.zsh
:
加強 Zsh 自動補全功能,與zsh-completions
共同工作。 -
OMZ::lib/history.zsh
:
優化 Zsh 歷史記錄的管理,支持持久化和快速調用。 -
OMZ::lib/key-bindings.zsh
:
提供更直觀的按鍵綁定功能,增強終端交互。 -
OMZ::lib/theme-and-appearance.zsh
:
控制 Zsh 的主題和外觀設置,與 Powerlevel10k 搭配效果最佳。 -
djui/alias-tips
:
提供別名提示功能,例如在輸入git status
時,會提示已定義的別名(如gst
)。
安裝 x-cmd 工具#
x-cmd 簡介#
在遷移完成後,我還嘗試安裝了 x-cmd 工具。它是一款採用 POSIX Shell 編寫的輕量級工具,具有以下特點:
- 無需 root 權限:自帶包管理器,無需超級用戶權限即可運行。
- 模塊化設計:代碼以模塊(mod)方式組織,靈活性高。
- 開箱即用:安裝簡單,即可用於多種運維場景。
安裝步驟#
安裝 x-cmd 的命令如下:
eval "$(curl https://get.x-cmd.com)"
x-cmd 的包管理功能讓我可以輕鬆安裝一些獨立工具,而不必依賴系統級包管理器什麼什麼的,好用就對了!
此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://ling.tblstudio.cn/posts/default/server-migration-with-rsync-and-zsh