「mv」中にソースパーティションの空き領域が変更されないのはなぜですか?


13

mvディレクトリ(多くのファイルを含む)をあるパーティションから別のパーティションに移動するために実行しています。mvディレクトリ内の個々のファイルを1つずつ移動している間、ソースパーティションの空き領域サイズは変わらず、デスティネーションパーティションの空き領域サイズは減少していることに気付きます。

ソースパーティションとデスティネーションパーティションの空き領域サイズの合計が同じままではなく、そのように動作するのはなぜですか?

回答:


16

POSIXが定義するように、mvはソースファイルを宛先パスに複製します。何も問題がなければ、ソースファイルは削除されます。

  1. source_fileをルートとするファイル階層は、宛先パスをルートとするファイル階層として複製されます。

  2. source_fileをルートとするファイル階層は削除されます。これが何らかの理由で失敗した場合、mvは標準エラーに診断メッセージを書き込み、現在のsource_fileでこれ以上何もせず、残りのsource_filesに進みます。

同じファイルシステム上で移動する場合、ファイルシステム内のある場所から別の場所にエントリを移動するだけです。

移動プロセス中にエラーが発生しても、ソースファイルが失われないことが保証されています。


16

保守的であり、コピーが成功するまでファイルを削除しません。これにより、何か問題が発生した場合の復旧が容易になります。


しかし、ディレクトリには多くのファイルがあります
ティム

7
@Tim:すべてのファイルが宛先ボリュームに複製されるまでソースファイルの削除は開始されません。ファイルを一度に1つずつ移動する必要がある場合、最大ファイルの「余分な」スペースが使用されることがないようにするには、ループを作成してこれを行う必要があります。
ウォーレンヤング

4
MS-Windowsで移動したことがありますが、移動の途中で何かがおかしくなります。送信元と宛先の両方が混乱しているので、修正する必要があります。あなたが夕食のオタクでないなら、おそらく両方を削除し、それを二度としないことを学ぶでしょう。
ctrl-alt-delor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.