環境の移行・バックアップ・復元

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

このシリーズで構築した環境を別のサーバーに移行したい場合や、何かが壊れてスナップショットから復元する場合の手順をまとめます。案件が終了してユーザーを削除する手順も含めます。

構築作業に比べて「移行は難しそう」と感じるかもしれませんが、この環境の実体は Git リポジトリと OS の設定です。持っていくものが明確なので、手順さえ分かっていれば迷うことはありません。

何をバックアップすべきか

移行やバックアップの前に、この環境で「持っていくべきもの」を整理しておきます。大きく分けて、Git で管理されているもの、OS に設定されているもの、メインPC 側にあるものの3つです。

Git リポジトリ(プロジェクトのコード)

ソースコード、CLAUDE.md、settings.json、CLAUDE-global.md はすべて Git で管理しています。リモートリポジトリに push してあれば、新しい環境で clone するだけです。ローカルにしかないコミットがある場合は、移行前に push しておいてください。

雛形ディレクトリ(管理ユーザー側)

管理ユーザーのホームにある ~/cc-template/ は、新しいプロジェクトを作るたびに使う雛形です。settings.json のベースや CLAUDE-global.md の正本が入っています。これも Git で管理するか、手動でバックアップしてください。

OS の設定

Git リポジトリとは別に、OS 側に設定した内容があります。これらはファイルのコピーではなく、移行先で再設定する必要があります。

設定項目設定場所該当記事
SSH 公開鍵認証・パスワード認証無効/etc/ssh/sshd_config.d/記事6
fail2ban/etc/fail2ban/jail.local記事6
UFW ルール(イン・アウト)ufw コマンドで設定記事6
ディスククォータ/etc/fstab + setquota記事7
プロセス数制限(ulimit)/etc/security/limits.d/記事7
メモリ制限(cgroups)/etc/systemd/system/user-*.slice.d/記事7
設定ファイルロック(chattr)各ユーザーの .bashrc 等記事7
コマンド実行制限(chmod o-x)/usr/bin/ の各コマンド記事7
sudoers(rsync 用)/etc/sudoers.d/rsync-sync記事10

メインPC 側のファイル

メインPC 側のプロジェクトフォルダ(sync スクリプト、接続設定、.gitignore など)は、Git リポジトリに含まれているか .local\ に配置されています。Git に push してあれば、メインPC 側は clone するだけで復元できます。.local\ 内の設定ファイル(接続情報など)は Git 管理外なので、別途バックアップしておいてください。

別サーバーへの移行

新しいサーバー(VM)に Ubuntu 24.04 LTS をインストールして、同じ環境を再構築する手順です。OS のベース構築(記事4)から始めて、記事14のチートシートを使って進めるのが最も効率的です。

移行の手順

大まかな流れは以下のとおりです。

1. 新サーバーに Ubuntu 24.04 LTS をインストール(記事4)
2. SSH 強化・UFW 設定(記事6)
3. 専用ユーザーの作成・制限設定(記事5, 7 → チートシートの記事14)
4. Claude Code のインストール・認証(記事8 → チートシートの記事14)
5. Git リポジトリを clone(リモートリポジトリから)
6. 雛形ディレクトリのコピー(旧サーバーからバックアップしたもの)
7. メインPC 側の接続設定を新サーバーの IP に更新
8. 動作確認(sync-watch → sync-ready → 同期のテスト)

ステップ2〜4は、記事14のチートシートに沿って進めれば、一通りの設定が完了します。構築時に1つ1つ説明を読みながら進めた内容を、手順だけ追って再現する形です。

移行先で変わるもの

ほとんどの設定はそのまま再現できますが、いくつか移行先に合わせて変更が必要なものがあります。

変更が必要なもの対応
Ubuntu の IP アドレスUFW のインバウンドルール、メインPC 側の接続設定を更新
UID(ユーザーID)cgroups のスライス名を新しい UID に合わせる
Claude Code の認証新しいインストールなので再認証が必要
SSH の公開鍵新サーバーの管理ユーザーに公開鍵を再配置

VMware スナップショットからの復元

VMware のスナップショットは、OS の状態をまるごと保存・復元できます。このシリーズでは記事8(Claude Code インストール後)と記事10(ワークフロー設定後)でスナップショットを取得しています。

スナップショットを取るタイミング

以下のタイミングでスナップショットを取っておくと、トラブル時に安全な状態まで戻せます。

  • OS の制限設定が完了した後(記事7完了時点)— 最も安全な復元ポイント
  • Claude Code のインストール・認証後(記事8完了時点)— 動作確認まで終わった状態
  • ワークフロー設定後(記事10完了時点)— 日常の開発を始められる状態
  • apt でパッケージを追加する前 — MySQL クライアントなど、新しいパッケージを入れる前に取っておくと安心

復元後に確認すること

スナップショットから復元した場合、OS の設定はそのまま保持されます。ただし、スナップショット取得後に行った作業(ファイルの変更、新しいプロジェクトの追加など)は失われます。復元後に以下を確認してください。

# ネットワークの確認
ip addr show
ping -c 1 8.8.8.8

# SSH の動作確認(別のターミナルから接続テスト)

# UFW ルールの確認
sudo ufw status numbered

# Claude Code の動作確認(専用ユーザーに切り替えて)
sudo su - <ユーザー名>
cd ~/project
claude --version

Git リポジトリの状態は、スナップショット取得時点に戻ります。スナップショット後にコミット・push した内容がリモートリポジトリにあれば、git pull で取得できます。

Claude Code の認証再設定

Claude Code の認証トークンは専用ユーザーのホームディレクトリに保存されています。通常のスナップショット復元では認証情報も復元されるため、再設定は不要です。

再認証が必要になるのは、以下のケースです。

  • 別のサーバーに新規インストールした場合
  • 認証トークンの有効期限が切れた場合
  • Claude Code をアンインストール・再インストールした場合

再認証の手順は初回と同じです。専用ユーザーに切り替えて claude を起動すると、ログイン方法の選択から始まります。表示される URL をメインPC のブラウザで開いて認証を完了してください。

sudo su - <ユーザー名>
cd ~/project
claude
# ログイン方法の選択 → ブラウザ認証 → Login successful.

案件終了時のクリーンアップ

案件が終了して専用ユーザーが不要になった場合、ユーザーとホームディレクトリを削除します。削除前に、Git リポジトリがリモートに push 済みであることを必ず確認してください。

# 削除前の確認:未 push のコミットがないか
sudo su - <ユーザー名> -c "cd ~/project && git log --oneline origin/main..HEAD"

# ユーザーとホームディレクトリの削除
sudo userdel -r <ユーザー名>

ユーザーを削除したら、関連する OS の設定も削除します。

# ulimit の設定ファイルを削除
sudo rm /etc/security/limits.d/<ユーザー名>.conf

# cgroups のスライス設定を削除(UID を確認して置き換え)
sudo rm -r /etc/systemd/system/user-<UID>.slice.d
sudo systemctl daemon-reload

# UFW の DB 接続ルールを削除(このユーザー専用のルールがある場合)
# sudo ufw status numbered で番号を確認してから
# sudo ufw delete <ルール番号>

ディスククォータは、ユーザーを削除すれば自動的に解放されます。個別の削除操作は不要です。