コピーするときに実際のサイズまたは見かけのサイズのどちらを考慮しますか?

コピーするときに実際のサイズまたは見かけのサイズのどちらを考慮しますか?

見かけのサイズは1GiBですが、空き容量が512kiBのUSBフラッシュドライブなどにコピーできる場合、実際のサイズは0Bかどうか疑問に思います。

次のコマンドを使用してファイルを作成できます。

dd if=/dev/null of=big-file bs=1 seek=1GiB

これで、見かけの寸法と実際の寸法を見ることができます。

du --apparent-size -hs big-file

ノート:--apparent-size実際の寸法を取得するには、オプションを削除します。

したがって、主な質問は、ファイルをディレクトリ(ハードドライブ、USBフラッシュドライブ、DVDなど)にコピーするときにどのようなサイズを考慮しますか?

答え1

実際のサイズ。

宛先ファイル。

これ最も簡単な実装これを事前に予測しようとしないでください。

これに加えて、少しオーバーヘッドが必要です。このオーバーヘッドを予測するのはより複雑です。


スパースファイルのサポートは、ファイルシステムとコピーを実行するプログラムによって異なります。特に、FATファイルシステムはスパースファイルをサポートしません。

GNUはcp希少ファイルを自動的に検出して処理します。事前にスペースを確認しません。 (GNU coreutils 8.29ドキュメントに基づいています)

デフォルトでは、スパースソースファイルはおおよそのヒューリスティックによって検出され、対応するターゲットファイルもスパースされます。これは選択された動作です--sparse=auto--sparse=always SOURCEファイルにゼロバイトの長いシーケンスが含まれるたびにスパースDESTファイルが生成されることを指定します。

ファイルシステムはさまざまなブロックサイズを持つことができます。これにより、希少ファイルが使用するスペースが増減する可能性があります。

(通常はファイルデータの書き込み返品独自のスペースが必要な内部ファイルシステム構造。これはファイルサイズでは表示されません。実際のサイズでも見かけのサイズでもありません。従来のUNIXファイルシステム設計では返品無料のインデックスノードが必要です。 inodeに使用可能なスペースは次のとおりですdf -i。最も明白なのは、ファイル名を保存するには少しのスペースが必要であることです。 :-) これは通常、親ディレクトリのサイズで表されます。これは質問で具体的に議論される。空のファイルをたくさん作成するとディスク容量が消費されますか?)

関連情報