web-dev-qa-db-ja.com

/ usrを新しいパーティションに移動する方法は?

/usrフォルダーを新しいパーティションに移動する必要があります。内容を消去せずにこれを行うにはどうすればよいですか?

Ubuntuの実行中にこれを実行できますか、それともLiveCDを使用する必要がありますか?

24
Nathan Osman

Live CDを使用するのが最も安全ですが、次のこともできます。

  • すべてのファイルを新しいパーティションにコピーし、/usrの内容がこの間変更されないようにします。
  • /etc/fstabを編集して、次の再起動時に/usrがマウントされるようにします
  • リブート
  • 古いファイルを削除する

各ステップの詳細については、以下を参照してください。

/usrには多数のファイルが開かれるため、実行中に/usrに新しいパーティションをマウントすることはできません。

ファイルをコピーする

cp -aを使用します。 -aはアーカイブオプションです。 manページ から:

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

/ etc/fstabの編集

新しいパーティションのUUIDを知る必要があります。次のようにしてマッピングを確認できます。

$ ls -l /dev/disk/by-uuid/

そして、次の行を/etc/fstabに追加します。

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

UUIDをUUIDに変更し、ext4を使用しているファイルシステムタイプに変更します。パーティションを設定した場合は、これを知っておく必要があります。

古いファイルを削除する

再起動後、ルートパーティションの/usrにある古いファイルは、/usrにマウントされた新しいパーティションによって非表示になります。しかし、いくつかの mount bind trickery を使用して、古いファイルを取得してから削除できます。

$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt

しかし、若干の誤入力(たとえば、Sudo rm -rf /mntと入力しただけでEnterキーを押す)は災害を引き起こす可能性があります。ダウンタイム、またはマシンに物理的にアクセスできなかったため、ライブCDまたはライブUSBスティックから起動できませんでした。

25
Hamish Downer

使用されるほとんどのライブラリは/ usrにあるため、Ubuntuの実行中にこのディレクトリを移動することはお勧めしません。実際、これを行おうとすると、おそらくエラーメッセージが表示されます。したがって、最良の方法はLiveCDを使用することです。

Cp、rsyncなどのファイルを移動/コピーするには、いくつかの可能性を使用できます。シンボリックリンクが作成されるだけでなく、コピーされることを確認したいです。 cpとrsyncの両方にこのオプションがあります。

ファイルを他のパーティションに移動した後、/ etc/fstabに別のマウントを追加して、新しいパーティションを/ usrにマウントする必要があります。

7
txwikinger

注意:自分が何をしているのか分かりません。コマンドをコピーして、他の人が示唆するようにしています。これは間違った方法かもしれませんが、私にとってはうまくいきます(少なくとも今のところ)。

これは私がそれをやった方法です(ハミッシュの答えとコメントに従って):

  1. 新しく作成されたパーティションのすべてのファイルをコピーします(パーティションの場所に置き換えてください。これは私のパーティションに似ているはずです)。

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. この時点で、パーティションの/usrフォルダーにすべてをコピーしたことに気付きましたこれは機能しませんなので、そのフォルダーから(ファイルマネージャーを使用して)すべてをコピーしましたパーティションのルートに移動し、その後その空のフォルダを削除します。

  3. /etc/fstabを編集します(もちろんHamishの答えと同じですが、UUIDに置き換えてください)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. 非常に賢明ではないことが判明したステップ:現在マウントされている/usrパーティションの名前を/usrBACKUPに変更しました。これは、システムを再起動すると、実際には古いパーティションではなく、新しく作成されたパーティション。その後、画面上ですべての不具合が発生し、電源キーを長押しして電源をオフにしなければなりませんでした(現在の天才)。システムに不具合を生じさせたくない場合は、この手順をスキップしてください。

  5. システムを再起動します

  6. 再起動後、システムモニターまたは同様のアプリケーションを開いて、新しい/usrパーティションがマウントされているかどうかを確認し、すべてが計画どおりに行われたかどうかを安全に確認します。

  7. すべてが正常であることを確認したら、古い/usrパーティションを削除できます。何か問題が発生した場合に備えて、私は私のものを保持します。