web-dev-qa-db-ja.com

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

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

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

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

データを一緒に移動することを避け、btrfsに直接ファイルを別の場所に複製するように直接指示できますか?

本質的には、ハードリンクに似ていますが、独立したメタデータ(権限、変更回数など)があります。

14
Udo G

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

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

ほとんどの場合、2番目の方法が最初の方法よりも望ましいです。 autoを使用すると、ファイルシステムが再リンク(ext4やNFS共有へのコピーなど)をサポートしていない場合に、真のコピーを実行することになります。最初のオプションを使用すると、完全に失敗してコピーが停止することを確信しています。

これを理想的でない条件に直面してもロバストである必要があるスクリプトの一部として使用している場合は、autoがより適切に機能します。

12
eestrada