MacOS X の場合 cp --reflink=auto

MacOS X の場合 cp --reflink=auto

cp --reflink=autoMacOS の場合、次の出力が表示されます。

cp:無効なオプション - -

HFSは記録中のコピーまたは重複排除をサポートしますか? HFS COW 大容量ファイルの使用方法は?

答え1

Appleの新しいAPFSファイルシステムは、書き込み中のコピーをサポートしています。 CoWは、利用可能なFinderコピー操作とcp -cコマンドラインで使用されると自動的に有効になります。

残念ながら、は(not)cp -cと同じで、記録中にコピーできない場合は失敗します。cp --reflink=alwaysauto

cp: somefile: clonefile failed: Operation not supported

私はその行動を得る方法を知りませんauto。自動置換機能を使用してシェルスクリプトまたは関数を作成できます。アッラー

cpclone() { cp -c "$@" || cp "$@"; }

しかし、すべての極端なケースで完全に信頼できるようにすることは困難です。

答え2

2021年11月の更新:この回答は、今後のcoreutilsの変更により古くなっています。 reflink = autoは常にデフォルトです。25725f9(coreutils 9.0). APFS クローンはツリー内で次のようにコミットされます。5e36c0cそしてcoreutils 9.1に現れなければなりません。


2019年11月オリジナルの投稿:あなたが書いたパッチメーリングリスト--reflink)macOS> 10.12をサポートするGNU coreutilsの場合。はい、--reflink=auto少なくとも私が測定したタイミングに従って動作します。

これを使用する2つの方法は次のとおりです。

  • gitリポジトリを複製して実行し、./bootstrap一般的な./configure -Cおよびmake -j12 install
  • パッチ適用(8.31にリセット)を別のバージョンのcoreutilsに切り替えて、痛みを伴う起動プロセスをスキップします。

ここで利用可能なさまざまなパラメータを取得できます。自家製式。変更は唯一のcpものとのみmv有効であるため、これら2つのバイナリのみを置き換えることを選択できます。 (mvreflinkを使用することはサブモジュールに役立ちます。)


一つある関連パッチcpreflink = autoもデフォルトで有効になっていますinstall。常にこのオプションを追加するのを忘れた場合、またはginstallMakefileでより高速な機能が必要な場合は、このオプションを試してください。

答え3

公益事業Rust で書かれた GNU coreutils レプリカです。macOSのAPFSで参照リンクコピーをサポートLinuxのGNU coreutilsと同じ構文を介して。

答え4

残念ながら、この--reflink=autoオプションはまだMacOSでは利用できません。 HFSはデフォルトでCoW(記録中のコピー)もサポートしていません。

おそらくそのようなサポートは将来追加されるでしょう。それはおそらく、ZFSが既定で有効になっているか、他のプライマリファイルシステムがサポートを追加したときでしょう。

現在利用可能なオプションについては、マニュアルページを参照することをお勧めします。man cp


メモ:

MacOSでは、ほとんどのコマンド(含むcp)は長いオプションではなく短いオプションのみをサポートしています。したがって、それに対応する文字がある場合、これは1つの文字にすぎません。例はGNU coreutilsバージョン-Lにあり、MacOSでのみ利用可能です。--dereferencecp-L

関連情報