\r\n\r\n
Linuxのホームフォルダを他のドライブに移動したいですか?ここでは、どのディストリビューションでも使える簡単な方法をステップバイステップで紹介します。ホームフォルダを移動することで、個人ファイルを心配することなく、Linuxを再インストールすることができます。
新しいコンピュータをセットアップしたり、既存のコンピュータにハードディスクを追加したりする場合、ホームディレクトリをデフォルトの場所とは別のドライブに配置する必要がある場合があります。
最近のPCでは、OSを中型のSSD(ソリッドステートドライブ)に、データを保存するメインストレージを大型のSSHD(ソリッドステートハイブリッドドライブ)や従来のHD(ハードディスクドライブ)に搭載する構成が主流になってきています。あるいは、従来のハードディスクドライブしか搭載しておらず、ストレージ容量を増やすために新しいHDを追加した場合もあるでしょう。どのような理由であれ、ここではホームディレクトリの移動を簡単に一発で行うことができます。
ところで、Linuxシステムをゼロからインストールする場合、Linuxディストリビューションのインストーラーに、別のホーム・ディレクトリを作成するオプションが表示されることがあります。通常は、パーティションオプションで、別のパーティションを作成し、「/home」にマウントするだけです。しかし、すでにLinuxディストリビューションをインストールしている場合は、これらのコマンドを使用して、内容を失うことなく、またOSを再インストールすることなく、現在のホームディレクトリを新しい場所に移動することができます。
さて、始める前に、バックアップを取ってきてください。
関連:Linuxシステムのバックアップ方法
Linuxコンピュータにドライブをインストールしたばかり、あるいは新しいマルチドライブコンピュータの1つにLinuxをインストールしてから再起動した場合、新しいドライブが存在する証拠がほとんどありません。
fdiskコマンドは、ドライブとそのパーティションをリストアップしてくれます。
sudo fdisk -l新しいドライブが見つかるまで、出力をスクロールします。最初のドライブは/dev/sda、2番目のドライブは/dev/sdbというように、毎回最後の文字が増加するようになっています。つまり、/dev/sdeはシステムで5番目のハードディスクになります。
この例では、新しいドライブはシステムにインストールされる2番目のドライブであるため、/dev/sdbのエントリを見つける必要があります。
/dev/sdbは上でハイライトされていますが、パーティションを説明する行がないことに気がつくでしょう。これは新しいドライブなので、まだ存在しません。パーティションを作成する必要があります。fdiskを使えばいいのです。ドライブが/dev/sdbでない場合は、コマンド内で/dev/sdbを新しいドライブの実際のドライブ識別子に置き換えていることを確認します。
sudo fdisk /dev/sdbfdiskがコマンドを要求してきたら、pの文字を押してください。これでハードディスクのパーティションテーブルが印刷されます。搭載されないことは分かっていますが、ドライブに関する有益な情報を得ることができます。パーティションを作成するドライブが使用するものであるかどうかを確認する良い機会になります。
このドライブは1TBであることが表示され、このテストマシンで期待されるものと一致するので、続行します。
新しいパーティションの場合はnを、プライマリパーティションの場合はpを押してください。パーティション番号の入力を求められたら、数字の1を押してください。
ディスク全体のパーティションを作成するので、最初のセクタの入力を求められたら、Enterキーを押してデフォルト値を受け入れることができます。その後、最後のセクタを入力するプロンプトが表示され、Enterキーでデフォルト値を受け付けます。
fdiskで1TBのLinuxパーティション(パーティション番号1)が作成されたことは確認できましたが、ドライブの中身はまだ変化していません。fdiskに変更内容を書き込むコマンドを発行しない限り、ドライブは変更されないままです。選択した内容が満足のいくものであることを確認したら、wの文字を押して変更内容をドライブに書き込みます。
パーティションが/dev/sdbに書き込まれました。何が起こったか見てみましょう。
sudo fdisk /dev/sdbpの文字を押してパーティションテーブルを印刷すると、ドライブにパーティションがリストアップされていることが確認できます。このドライブの最初のパーティションなので、/dev/sdb1 と呼ばれ、2番目のパーティションは /dev/sdb2 と呼ばれ、以下同様です。
パーティションに変更を加えたくないので、qの字を押して終了してください。
パーティションにファイルシステムを作成する必要があります。これはmkfsコマンドで簡単に行えます。なお、コマンドには必ずパーティション番号を入れてください。dev/sdb(ドライブ)ではなく、/dev/sdb1(パーティション)と入力することに注意してください。
sudo mkfs -t ext4 /dev/sdb1ファイルシステムが作成され、コマンドプロンプトに戻ります。
新しいドライブを使用するには、そのドライブ上のパーティションをファイルシステムのマウントポイントにマウントする必要があります。実際には、正確にはドライブでもパーティションでもなく、パーティション上のファイルシステムをシステムのファイルシステムツリーに移植することでマウントしています。
これは、とても良いことだと思います。これは、新しいドライブにデータをコピーするための一時的なマウントポイントに過ぎないのです。mountコマンドを使用して、/dev/sdbの第1パーティションのファイルシステムをat/mntにマウントすることにします。
sudo mount /dev/sdb1 /mntすべてがうまくいけば、エラーメッセージなしにコマンドラインに戻ります。それでは、ディレクトリを新しくインストールしたファイルシステムに変更してみましょう。
cd /mntはい、できます。では、どんなものがあるか見てみましょう。
ls -ahlデフォルトの "lost+found "ディレクトリは、新しいファイルシステムには必要ないので、削除してもよいでしょう。
sudo rm -rf lost+found古いホームディレクトリから新しくインストールされたファイルシステムにすべてをコピーする必要があります。r (recursive) と p (preserve) オプションを使用すると、すべてのサブディレクトリがコピーされ、ファイルの所有権、パーミッション、その他の属性が保持されます。
sudo cp -rp /home/* /mntコピーが完了したら、ls を使って新しいファイルシステム上の期待通りの場所にデータがあることを確認します。つまり、/mntがホームディレクトリの場合、すべてが正しく存在しているかどうか?
ls ls daveこの記事で見たテスト機で行ったよりも、もう少し徹底した方がいいかもしれません。セーフティネットとして、お客様が削除しても大丈夫と確信されるまで、旧/ホームディレクトリの名前を変更し、保管します。
sudo mv /home /home.orig空のホームディレクトリを新規に作成します。
sudo mkdir /homeこの新しい空のホームディレクトリを、新しいドライブ上のファイルシステムのマウントポイントとして使用することにします。mntからアンマウントして、/homeに再マウントする必要があります。umountコマンドは "u "の後に "n "がないことに注意
しかし、その前に、ルートディレクトリに切り替え(cd/を使用)、loadまたはunloadの場所に含まれるディレクトリにいないことを確認します。
cd / sudo umount /dev/sdb1 sudo mount /dev/sdb1 /home/関連:Linuxのディレクトリ構造、説明
では、/dev/sdb1パーティションの属性を見てみましょう。
df /dev/sdb1ファイルシステムの名前、パーティションのサイズ、パーティションで使用されているスペースと使用可能なスペース、そして重要なのは、ファイルシステムがインストールされている場所が表示されることです。これで/homeディレクトリになりました。つまり、以前の/homeディレクトリと同じように参照できるはずです。
ファイルシステム内の任意の場所に移動したら、~tilde ショートカットで /home に戻せるはずです。
cd / cd ~ pwd ls cd /home ls cd dave ls ls -aexplicit コマンドと ~shortcut を使って、ファイルシステムを /home まで行ったり来たりすることができます。存在すると予想されるフォルダ、ファイル、ドットファイル。すべて順調のようです。
何か足りないものがあれば、/home.orig ディレクトリからコピーすれば、ファイルシステムのルートディレクトリにあるものにアクセスすることができるのです。でも、すべて問題なさそうです。
あとは、/dev/sdb1 をコンピュータを起動するたびに自動的にインストールするようにします。
fstab "ファイルには、システム起動時に読み込まれるファイルシステムの記述があります。変更が加えられる前に、**バックアップコピーを作成し、問題が発生した場合に戻せるようにします。
sudo cp /etc/fstab /etc/fstab.origこれで、fstabファイルを編集することができます。
sudo gedit /etc/fstab新しい/homeディレクトリをマウントするために、ファイルの一番下に一行追加する必要があります。ドライブやパーティションの識別子がこの例と異なる場合は、ここで示した /dev/sdb1 をこれらの識別子に置き換えてください。
fstab ファイルを保存します。
すべてが計画通りに進んでいること、新しい/homeディレクトリにシームレスに接続していることを確認するために、再起動する必要があります。
そうでない場合でも、元の/homeディレクトリとfstabファイルというセーフティネットにアクセスすることができ、必要に応じて復元することができます。注意事項があるため、/homeディレクトリとfstabファイルをコピーすれば、簡単に起動前の状態に戻すことができます。
sudo reboot now関連:コマンドラインを使ったLinuxの再起動・シャットダウン方法
システムが再起動したとき、/homeディレクトリが実際に新しいハードディスクにあること、そしてシステムがどうにか(奇跡的に)古い/homeディレクトリを使うように戻っていないことを確認しましょう。
df /dev/sdb1よかった、/homeにインストールされた。ミッション達成。
古い/ホームディレクトリの安全なコピーがもはや必要でないことが完全に確認された後、それを削除することができます。
cd / sudo rm -rf home.orig/もちろん、旧/ホームから新/ホームにコピーされていないものがあることに気づいたら、事前に作成したバックアップから取り出すことができます。
これで、/homeディレクトリを他のオペレーティングシステムパーティションから切り離したので、オペレーティングシステムを再インストールしても、データは影響を受けません。fstabファイルを編集して、/homeに2台目のドライブをインストールできるようにすればよいのです。
ドットファイルはすべて/homeディレクトリにあるため、各種アプリケーションを起動した際に、設定や環境設定、データなどをすべて見つけることができます。
再インストールの手間を軽減し、アップグレードのリスクも軽減します。