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


26

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

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

回答:


27

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。ただし、いくつかのマウントバインドトリックを使用して、古いファイルにアクセスしてから削除できます。

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

しかし、若干の誤入力(たとえば、入力しただけでEnterキーを押すsudo rm -rf /mnt)は災害を引き起こす可能性があるため、自分がやっていることに自信がある場合、実際にダウンタイムに対処できない場合、またはダウンタイムがない場合にのみこの方法を使用しますマシンに物理的にアクセスするため、ライブCDまたはライブUSBスティックから起動できませんでした。


4
rsyncこれよりもはるかに適していますcp
マルコセッピ

1
@MarcoCeppiそれについて拡張していただけますか?rsync代わりに使用する別の答えを与えるかもしれませんか?
カザール14

6
cpコマンドをに置き換えますrsync -avz。Rsyncを使用すると、コピーを再起動できます。通常、パーティション、ブロックデバイス、またはマシン間を移動するときに使用する必要があります。
マルコセッピ

2
使用しないでくださいcp。ハードリンクは保持されません。これにより、将来パッケージのアップグレードが中断されます。たとえば、/usr/bin/s2p/usr/bin/psedは同じファイルです。で移動するcpと、そのファイルの2つの独立したバージョンが作成されます。やるrsync -aH代わりに。
oᴉɹǝɥɔ

1
まず、-zフラグをスキップします-ネットワーク経由でファイルを送信していない場合、圧縮は有効になりますが、オーバーヘッドは無用です(ただし、rsyncは通常は無視するのに十分ですが、それでもドロップする可能性があります) 。@AleksandarStefanovićあなたは間違いなく、そこに内容を望んでいない、フォルダ、およびそれが起こった理由は、方法は、いくつかのrsync癖によるものであること:それは扱いrsync -avH a/ bは異なるrsync -avH a bコピー、コンテンツフォルダのa(で、a/*最初の場合)とフォルダ自体を第二に。必ずここでスラッシュを使用してください。
ダラエル

7

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

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

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


2

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

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

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

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

  3. 編集/etc/fstab(もちろん、ハミッシュの答えと同じですが、UUIDに置き換えてください)

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

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

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

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


すでに受け入れられた回答があり、何について話しているのかわからない場合、5歳の質問に答えるのはなぜですか?
cmks

2
@cmksは、他の回答が不完全だと感じたためです。1つの回答から完全な解決策を得られなかったため、回答の詳細が十分ではありませんでした。この質問に答えるユーザーには助けが必要だと感じました。誰かがまだこの質問からの情報を必要とする場合、それが5歳かどうかは関係ありません。
アレクサンダーステファノビッチ

1
誰もがシステムを再起動するのはなぜですか?sudo mount -a実行し続けることを許可すべきではありませんか?
ハーゲンフォンアイゼン

@Hagen私はそれがちょうど良い尺度だと思う
アレクサンダーステファノビッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.