cp -fとcp --remove-destinationの違いは何ですか?

cp -fとcp --remove-destinationの違いは何ですか?

cp マンページには、-f/--force オプションが次のようにリストされています。既存のターゲットファイルを開くことができない場合は、そのファイルを削除して再試行してください。

--remove-destination オプションの場合、これは次のことを意味します。既存のターゲットファイルを開く前にそれぞれ削除します(--forceとは対照的です)。

したがって、前者は最初に開くことができることを確認し、開くことができない場合はとにかく削除し、後者はそのステップをスキップします。各オプションを-iオプションと組み合わせましたが、どちらの場合もファイルが書き込み禁止になっている場合の権限を表します。

特に大きなディレクトリを繰り返しコピー/上書きすると、後者がより効率的に見えますが、両方のオプションを維持するのはなぜですか?とにかく取り扱い内容を確認すればどのような利点がありますか?

答え1

2つの間に違いがあります(強調)。

もし既存のターゲットファイルを開くことができません。そのファイルを削除してもう一度やり直してください。
既存のターゲットファイルをそれぞれ削除します。開こうとする前に

最初のケースでは、ファイルを開くことができる場合はcp内容のみを置き換えようとします。cpファイルは不必要に削除されません。これにより、元のファイルもコピーするように指定しない限り、元のファイルの権限と所有権が維持されます。

2番目のケースは、コンテンツを読み取れない場合に便利です(例:ぶら下がっているシンボリックリンク)。

答え2

そして:ターゲットファイルに複数のリンク(ハードリンク)がある場合、--remove-destinationは他のリンクの内容を削除しません。代わりに、ターゲットのリンクを削除し(より深いシステム機能で「削除」を「リンク解除」と呼ぶ理由がわかりました)、新しいinodeを使用して新しいファイルを作成します。

関連情報