/ homeを別のディスクに単純に転送するには、cp -a
を使用します。これは非常に遅い方法のようです。タスクを完了するためのより効率的な方法を知っている必要があります。/homeを論理ボリュームとしてマウントしていますが、ターゲットディスクはLVMシステムではありません
何かバッファリングしてtar
、pax
、cpio
を試してください。
(cd /home && bsdtar cf - .) |
pv -trab -B 500M |
(cd /dest && bsdtar xpSf -)
少なくとも一部のLinuxディストリビューションではbsdtar
はGNU tarであり、tar
に反するため、tar
ではなくbsdtar
をお勧めします(libarchive
から)拡張属性、ACL、またはLinux属性の保持を処理しません。
pv
は最大500Mのデータをバッファリングするので、2つのファイルシステムでの読み取りおよび書き込み速度の変動に適切に対応できます(ただし、実際には、他のディスクシステムより遅いディスクとOSの書き戻しがあります)メカニズムはそのバッファリングも行うので、おそらく大きな違いはありません)。古いバージョンのpv
は-a
をサポートしていません(平均速度レポート用)。pv -B 200M
を単独で使用できます。
いずれにせよ、それらにはcp
の制限がありません。つまり、readsおよびを順次書き込みます。ここでは、2つのtar
が同時に動作しているので、1つを読み取ることができますFS他の1つが他の1つを待ってビジー状態FS書き終える。
Ext4の場合で、少なくともソースと同じ大きさのパーティションにコピーする場合は、_ clone2fs
も参照してください。これは、ntfsclone
のように機能し、割り当てられたコピーをコピーします順番にブロックするだけなので、回転ストレージがおそらく最も効率的です。
partclone は、それをいくつかの異なるファイルシステムに一般化します。
ここで、ファイルシステムのクローンを作成するときに考慮すべきいくつかの事項を説明します。
複製とは、すべてのディレクトリ、ファイル、およびその内容をコピーすることです...その他すべて。これで、その他すべてがファイルシステムごとに異なります。従来のUnixファイルシステムの一般的な機能のみを考慮した場合でも、次の点を考慮する必要があります。
次に、ext4
およびほとんどのLinuxファイルシステムを検討する場合は、次のことを検討する必要があります。
SELinux
に使用されるものなど)すべてのツールがそれらのすべてをサポートするわけではありません。サポートする場合は、rsync
、tar
の--sparse
、--acls
...オプションのように明示的に有効にする必要があります。 ...そして、別のファイルシステムにコピーするときは、それらが同じ機能セットをサポートしていない場合を考慮する必要があります。
また、UUID、ルート用に予約されたスペース、fsckの頻度、ジャーナリングの動作、ディレクトリの形式など、ファイルシステム自体の属性を考慮する必要がある場合もあります。
次に、より複雑なファイルシステムがあり、ファイルをコピーして実際にデータをコピーすることはできません。たとえばzfs
またはbtrfs
を検討して、サブボリュームのスナップショットを作成してそれらを分岐できるようにしてください...データをコピーするための専用のツールがあります。
すべてを確実にコピーしたい場合は、ブロックデバイス(または可能な場合は少なくとも割り当てられたブロック)のバイト間コピーが最も安全です。ただし、UUIDの衝突の問題に注意してください。これは、より大きなものにコピーしていることを意味します(ただし、コピーする前にソースのスナップショットコピーのサイズを変更できます)。
たとえば、rsyncをお勧めします。
rsync -av --progress --stats dest orig
または、圧縮して転送するには:
rsync -avz --progress --stats dest orig