--link
これらとそしての違いは何ですか--reflink=always
?
代わりに、次のコマンドを使用していますが、それを使用する方が良いオプションmv
かどうか疑問に思います。--reflink
command gcp -r --link --archive --verbose "${opts[@]}" "$@"
# delete the sources manually
答え1
--link
cp
コピーする代わりにハードリンクを作成します。 「コピー」が完了すると、同じファイルシステム(ハードリンクに必要)にあると仮定すると、ファイルの単一インスタンスがそれを指す2つ以上のディレクトリエントリとともにディスクに存在します。これが望む外部状態です。つまり複数のディレクトリエントリが同じファイルを指すという事実が表示されます。これは同じinodeを指します。ディレクトリエントリの1つを介して変更された内容は、他のディレクトリエントリでも表示できます。
--reflink=always
可能であれば、最適化されたコピーをリクエストしてください。これは、特に記録中のコピーなど、さまざまな形式を取ることができますが、ネットワークファイルシステム上のサーバー側の複製として実装することもできます。コピーが完了すると、データブロックの単一コピーがディスクに存在しますが、2つのファイルが存在し、各ディレクトリエントリが異なるファイルを指す状況が発生する可能性があります。あるディレクトリエントリを介して変更された内容は、他のディレクトリエントリでは表示されません。各ファイルには別々のライフサイクルがあります(共有データブロックの副作用を除く)。例えばディスクの破損は両方のファイルに影響を与えます。
つまり、--link
明示的な要求は、同じファイルを指す新しいディレクトリエントリを作成し、その後の変更を共有します。--reflink=always
新しいファイルの作成を要求し、潜在的な最適化を実行し、その後の変更を分離します。
mv
あるいは、オペレーティングシステムの作業負荷を--link
軽減--reflink=always
します。