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