Linuxを別のパーティションに移動する方法は?


9

(/に含まれ、/ mnt / sdb5に新しい場所が準備されている)動作しているLinuxシステムのコピーを作成する必要があります。これには、/ devにハードリンク、ソフトリンク、および特殊ファイルが大量に含まれているようです。うcpio、追加の魔法を適用せずにこの仕事を扱いますか?

現在知られているセーフガード:

  • コピーが起動可能であり、で動作していると見なされるまで、実行中のシステムを削除/変更しませんroot=/dev/sdb5。削除する前に、パーティション全体のバックアップを取ってください。
  • 各ルートディレクトリを個別にアーカイブするためにcpioを使用するため、LiveCD環境から展開され、ドナーパーティションが損傷を受けることはありません。

しかし、それでも、cpioがいくつかのフラグを逃し、権限/ノードタイプ/ソフトまたはハードリンクを不自由にしたからといって、時間を無駄にすることはありません。

どのツールを使用するか/どの水中岩石を避けるべきか?



@ウォーレン、ありがとう。今度は別のcpio-vs-tarテストを行う予定です;)
カガリさん

心配しないでください:それが役に立てば幸いです:)
ウォーレン2011

回答:


10

に関する実際の質問に答えるにcpioは、次のフラグを使用しcpioます。

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

もちろん、ネットワーク経由でコピーしているわけではないので、次のように使用しますcp

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

また、コピーを数回実行できるようにしたい場合rsyncは、再開機能としては、より良い選択です。(これも同様にcp、ACLと拡張属性を処理し、オプションでのようにネットワーク経由で機能しcpioます。そのため、最初のコピーをローカルで行うことを除いて、これは最も便利なオプションですcp

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

コピーするのを忘れないでください/boot/dev

/bootコピーは簡単です。しかし/dev、それはによって隠されているので、最近ははるかにトリッキーudevです。次の手順をお勧めします。

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. 上記のコマンドのいずれか/dev/mnt/sdb5使用してコピーします
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev

6

@Kloxが述べたように、同じサイズのパーティションをコピーする場合、私はの使用に同意しddます。

ただし、ディスクをサイズの異なる別のパーティションにコピーする場合は、を使用しrsyncます。新しいパーティションをマウントして(たとえば、/ mnt / new)、次のようにします。

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

シンボリックリンクの追加の魔法はなく、ライブCDも必要ありません(シングルユーザー/ init 1で十分です)。


ああ、そうです。私はrsyncいつも使用していて、明らかなことを逃しました。私ddが述べた理由で好きですがrsync、OPのニーズにより適しています。
Klox、2011

3

のより最適なバリアントddはを使用していますpartimage。これは、パーティションの使用済みセクションのみをコピーして、未使用の大きなパーティションのコピーをより効率的にします。

重要な警告に注意してください:

Partimageは、新しいUbuntuインストールのデフォルトであるExt4をサポートしていません。

System Rescue CD配布には便利なコピーが含まれています


2

Linuxインストールをハードドライブ間で移動するときは、常にLive CDから起動し、ddパーティション全体のコピーに使用します。私はこれがディスクサイズの変更を処理しないことを認識しています(必然的に、新しいディスクはより大きくなり、物事を簡素化します)cpio。使用について懸念している理由から、この手法が好きです。使用するdd技術を、それはオール・オア・ナッシングだ:いずれかの新しいディスクのブーツを、すべてが同じである、またはディスクが起動しません。後で現れる問題に潜むリスクはありません。

もちろん、パーティションが新しいディスクをいっぱいにしないという問題がありますが、新しいパーティションを作成して余分なスペースをいっぱいにし、シンボリックリンクに依存してディレクトリを移動したいのです。(パーティションのサイズを変更するツールもあると思いますが、使用していません。)


私が話しているシステムは、500 GBのXFSパーティション上で約50 GBの空き容量があり(縮小することはできません。現在はによるサポートのみがサポートされていますxfs_grow)、ルートパーティションもXFSです。さらに悪いことに、それはほとんどその脂肪そのものである確立されたGentooです。さらに悪いことに、移動はストレージを追加せずに行う必要があり、現在60 GBを超えるバックアップはできないため、パーティション操作はできません。いくつかのものをテストするために、Winをそのマシンに置く必要があります。
カガリさん2011

また、ddは素晴らしいですが、ドライブ/パーティション操作では、独自のソリューションを使用する傾向があります。Acronis TrueImageはより適切に動作するようです(圧縮、samba共有-livecd / liveusbフラッシュから)。
カガリさん2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.