サーバー移行記録:Debian から Debian への移行作業
// 默认分类 · 2024-12-12 · 阅读 11 分钟 · 85 次阅读
今回の移行の主なタスクは、MCSManager を稼働させているサーバーを、ある Debian サーバーから別の新しい Debian サーバーへ移行することです。具体的には以下の内容が含まれます。
- Minecraft サーバー:3つのサーバー
- Velocity プロキシサーバー
- Purpur ログインサーバー
- Leaves サバイバルサーバー
- ボットサービス:
- Nonebot / Koishi フレームワークベース、OneBot v11 プロトコルを使用したボット
- 公式 QQ インターフェースを使用したボット
また、新しいサーバーに対して最適化設定も行いました。これには 1Panel パネルのインストール、Zsh ターミナルの設定、プラグインマネージャー Zinit の導入が含まれます。
今回の移行は、単なるベース環境のコピーではなく、技術スタックの反復的なアップデートでもありました~
データ移行
rsync を使用した転送効率の向上
移行プロセスでは、当初 scp を使用してデータ転送を試みましたが、転送速度が十分でないことがわかりました。そのため、rsync に切り替えました。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
これらの移行は非常に簡単で、/opt/1panel/apps 内のコンテンツを rsync で一つずつ転送するだけです。
もし面倒であれば、/opt/1panel ディレクトリ全体をそのまま移行することをお勧めします。実際に試して動作確認済みです(
いずれかの移行に興味があれば、コメントをお寄せください。もしかしたら、また記事を書くかもしれません。
Zsh ターミナルの設定
なぜ Zinit なのか
新しいサーバーのターミナルを設定するにあたり、一般的な Oh My Zsh ではなく、Zinit を 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
# キーバインド
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 のパッケージ管理機能により、システムレベルのパッケージマネージャーなどに依存することなく、個別のツールを簡単にインストールできます。とにかく便利です!