btrfsでデータをコピーせずにファイルを複製する方法は?


14

私はbtrfsの経験はありませんが、ファイルを重複排除できると宣伝されています。

私のアプリケーションでは、ディレクトリツリー全体を複製する必要があります。

私が学んだことから、btrfsはただちにではなく、いくつかのポストスキャンで重複を排除するだけです。使用するだけでもcp重複排除は行われないようです(少なくとも、dfコピーされたファイルのサイズでディ​​スク使用量が増加していることを示しています)。

データを完全に移動させずにbtrfs、別の場所でファイルを複製するように直接指示することはできますか?

本質的には、ハードリンクに似ていますが、独立したメタデータ(アクセス許可、修正時間など)を使用します。


7
cp --reflink=always
mikeserv

3
これはハードリンクのようなものではないことに注意してください。を使用するとcp --reflink=always、ユーザーの観点からの結果は、あらゆる点で2つの完全に独立したファイルになります。基礎となるファイルシステムがコピーオンライトを介して抽象化しているという事実は、実装の詳細にすぎません。「ハードリンクではなく、独立したメタデータを使用して」。私の知る限り、btrfsはまだ自動重複排除を行いません。これは将来の計画だと思いますが、それについては前向きではありません。
ormaaj

@ormaaj-ハードリンクには独立したメタデータがありません。そしてUdoは実装の詳細を求めました。ファイルへのreflinkを行うと、基本的にそのメタデータを複製します。参照が独立してファイルの分岐を変更する場合にのみ-それが重複排除のすべてです!
mikeserv

1
@mikeserv Er、重複排除には別の意味があると確信しています。重複排除では、データの既存の冗長コピーを取得して再統合します。COWは重複を最小限に抑えるための手段であり、重複排除ではありません。
ormaaj

@ormaaj-これは奇妙なことだと思います。重複排除とは、重複を最小限に抑えることではありません。
mikeserv

回答:


12

次の2つのオプションがあります。

  1. cp --reflink=always
  2. cp --reflink=auto

ほとんどの場合、2番目の方が最初の方が望ましいです。を使用autoすると、ファイルシステムがreflink(たとえば、ext4またはNFS共有へのコピー)をサポートしていない場合に、真のコピーの実行にフォールバックします。最初のオプションを使用すると、完全に失敗し、コピーが停止するはずです。

理想的ではない状況に直面して堅牢である必要があるスクリプトの一部としてこれを使用している場合auto、より良いサービスを提供します。


あなたはエリック・エストラダですか?
mikeserv

2
@mikeserv笑、いいえ。私の名はイーサンです。しかし、それは面白いでしょう。エリック・エストラーダ:昼は俳優、夜はシステム管理者。信じられないかもしれませんが、これは、eestrada誰もが私にそれを尋ねたことがないオンラインハンドルを10年以上使用するのは初めてです。
エストラダ

2
確かに、エリック。とにかく、良い答え。
mikeserv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.