这次迁移的主要任务是将一个运行 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