GNU cp:「--link」と「--reflink = always」の違いは何ですか?

GNU cp:「--link」と「--reflink = always」の違いは何ですか?

--linkこれらとそしての違いは何ですか--reflink=always

代わりに、次のコマンドを使用していますが、それを使用する方が良いオプションmvかどうか疑問に思います。--reflink

command gcp -r --link --archive --verbose "${opts[@]}" "$@"
# delete the sources manually

ベストアンサー1

--linkcpコピーする代わりにハードリンクを作成します。 「コピー」が完了すると、同じファイルシステム(ハードリンクに必要)にあると仮定すると、ファイルの単一インスタンスがそれを指す2つ以上のディレクトリエントリとともにディスクに存在します。これが望む外部状態です。つまり複数のディレクトリエントリが同じファイルを指すという事実が表示されます。これは同じinodeを指します。ディレクトリエントリの1つを介して変更された内容は、他のディレクトリエントリでも表示できます。

--reflink=always可能であれば、最適化されたコピーをリクエストしてください。これは、特に記録中のコピーなど、さまざまな形式を取ることができますが、ネットワークファイルシステム上のサーバー側の複製として実装することもできます。コピーが完了すると、データブロックの単一コピーがディスクに存在しますが、2つのファイルが存在し、各ディレクトリエントリが異なるファイルを指す状況が発生する可能性があります。あるディレクトリエントリを介して変更された内容は、他のディレクトリエントリでは表示されません。各ファイルには別々のライフサイクルがあります(共有データブロックの副作用を除く)。例えばディスクの破損は両方のファイルに影響を与えます。

つまり、--link明示的な要求は、同じファイルを指す新しいディレクトリエントリを作成し、その後の変更を共有します。--reflink=always新しいファイルの作成を要求し、潜在的な最適化を実行し、その後の変更を分離します。

mvあるいは、オペレーティングシステムの作業負荷を--link軽減--reflink=alwaysします。

おすすめ記事