Ubuntu: OSアップグレード・再インストール前のパッケージリストとホームディレクトリバックアップ手順

【概要】

Ubuntu の OS メジャーアップグレード、新規インストール、別マシンへの環境移行時に使う、パッケージリストとホームディレクトリのバックアップ手順を説明します。手順は、dpkg --get-selections によるパッケージリストの取得と、ホームディレクトリの tar アーカイブ作成です。取得したパッケージリストからは、GRUB などのブートローダー関連と Linux カーネル関連の行を削除します。これらを残したままリストアすると、稼働中のカーネルやブートローダーと競合し、システムが起動しなくなることがあります。作成した dpkg.txt と tar ファイルは、PC 本体とは別のストレージに保存します。

作成したホームディレクトリとパッケージリストファイルを用いた新システムでのリストア手順については、 別の Web ページで説明しています。

手順

  1. 手順1. (オプション) 不要ファイルの削除

    バックアップサイズを減らすため、ダウンロード済みパッケージのキャッシュと、依存関係のために入った不要パッケージを削除します。この手順は任意です。

    # ダウンロード済みパッケージのキャッシュを削除
    sudo apt clean
    
    # 不要になった依存パッケージを削除
    sudo apt -y autoremove
    

    ブラウザのキャッシュやアプリケーションのログなど、対象を選んで削除したい場合は BleachBit を使います。

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install bleachbit
    

    インストール後、BleachBit を起動し、削除する項目を選んで実行します。

  2. 手順2. パッケージリストの取得

    インストール済みパッケージの一覧を dpkg.txt に保存します。

    dpkg --get-selections > dpkg.txt
    

    あわせて、自分で明示的にインストールしたパッケージの一覧も保存しておくと、リストア時に最小構成で入れ直せます。

    apt-mark showmanual > dpkg-manual.txt
    
  3. 手順3. ホームディレクトリのバックアップ

    ホームディレクトリのファイルと設定(隠しファイルを含む)を tar アーカイブに保存します。your_username は実際のユーザー名に置き換えて実行してください。アーカイブは、バックアップ対象に含まれないように、ホームディレクトリの外(この例では /var/tmp)に作成します。

    # バックアップしたいユーザーのホームディレクトリへ移動する
    cd /home/your_username
    
    # ホームディレクトリ全体(カレントディレクトリ '.' を指定)をアーカイブにする
    # -c: 新規アーカイブ作成, -v: 詳細表示, -p: パーミッション保持, -f: ファイル名指定
    sudo tar -cvpf /var/tmp/home_your_username_$(date +%Y%m%d).tar .
    
    # 作成したファイルの所有者を元のユーザーに変更する
    sudo chown your_username:your_username /var/tmp/home_your_username_$(date +%Y%m%d).tar
    

    カレントディレクトリを示す . を指定することで、.bashrc のような隠しファイルもバックアップ対象になります。

    -p オプションは、ファイルのパーミッションと所有権を保持します。これにより、リストア後に権限を再設定する手間を省けます。

    サイズを小さくしたい場合は -z を追加し、拡張子を .tar.gz にします。

    sudo tar -czvpf /var/tmp/home_your_username_$(date +%Y%m%d).tar.gz .
    
  4. 手順4. パッケージリスト(dpkg.txt)の編集

    dpkg.txt には、現在のハードウェア構成やシステム構成に固有のパッケージ情報が含まれます。テキストエディタで開き、次の行を削除します。

    • deinstall の記述の削除

      「deinstall」を含む行は、削除済みのパッケージを示します。新規インストールしたシステムへのリストアでは不要なため、削除します。

    • purge の記述の削除

      「purge」(設定ファイルごと削除された状態)を含む行も、同様に削除します。

    • GRUB の記述の削除

      GRUB(ブートローダー)は、新しいシステムのインストール時にそのシステム用に設定されます。古い GRUB パッケージを指定するとブートローダーの設定が上書きされ、起動できなくなることがあるため、次のような行を削除します。

      grub-common                                     install
      grub-efi-amd64                                  install
      grub-efi-amd64-bin                              install
      grub-pc                                         install
      grub2-common                                    install
      shim-signed                                     install
      
    • Linux カーネル関連の記述の削除

      Linux カーネルは、システムのハードウェア構成に対応してインストールされます。新しいシステムにはその環境用のカーネルが入るため、古いカーネル関連の行(linux-image-*, linux-headers-*, linux-modules-* など)を削除します。

      linux-headers-6.14.0-32                          install
      linux-headers-6.14.0-32-generic                  install
      linux-headers-generic                             install
      linux-image-6.14.0-32-generic                    install
      linux-image-generic                               install
      linux-modules-6.14.0-32-generic                  install
      linux-modules-extra-6.14.0-32-generic            install
      
    • (オプション)NVIDIA ドライバ関連の記述の削除

      新しいシステムで NVIDIA グラフィックスドライバを改めてインストールする場合、またはバージョンを変える場合は、nvidia を含む行を削除します。

      nvidia-driver-580                               install
      nvidia-dkms-580                                 install
      nvidia-kernel-common-580                        install
      
    • (オプション)新しいシステムで使わないアプリケーションの記述の削除

      新しいシステムに入れる必要のないアプリケーションがある場合は、該当する行を削除します。パッケージ名で検索して削除します。

      transmission-gtk                                install
      transmission-common                             install
      aisleriot                                       install
      gnome-mahjongg                                  install
      gnome-sudoku                                    install
      
  5. 手順5. バックアップファイルの保管

    以上の操作で、次のファイルが作成されます。

    • ホームディレクトリのバックアップ: home_ユーザー名_日付.tar(例: home_taro_20260401.tar
    • パッケージリスト: dpkg.txtdpkg-manual.txt

    これらのファイルは、USB メモリ、外付けハードディスク、ネットワーク上のファイルサーバー、クラウドストレージなど、PC 本体とは別のストレージに保管してください。保管後、tar アーカイブが読み出せることを次のコマンドで確認します。

    # アーカイブの内容一覧を表示して、正しく作成されているか確認する
    tar -tvf /var/tmp/home_your_username_$(date +%Y%m%d).tar | head