web-dev-qa-db-ja.com

mvコマンドを使用すると、HDDでどのような変更が行われますか?

以下の条件下で-

  1. mv同じHDDパーティション内
  2. mvを同じHDD内の別のパーティションに
  3. mvを別のデバイス(USB HDDなど)に

ファイル全体が移動されますか、それともポインタの再割り当てのような非常に小さな変更ですか?

7
user13107

ファイルシステム内での移動(ファイルの名前変更とも呼ばれます)の処理方法は各ファイルシステム次第ですが、ファイルシステムは、iノードやファイルの内容を移動せずにディレクトリエントリを更新することで、ほぼ普遍的に処理します。

ファイルシステム間の移動(同じ物理メディア上にあるかどうかは関係ありません)は、ファイルのコピーとそれに続く削除として処理されます。これは実際、mvコマンドが実行することとまったく同じです。明らかにそれは宛先ファイルシステムがファイルの新しいコピーを作らなければならないことを意味します。

5
Celada

man mvさんのコメント:

 As the rename(2) call does not work across file systems, mv uses cp(1) and rm(1) to
 accomplish the move.  The effect is equivalent to:

       rm -f destination_path && \
       cp -pRP source_file destination && \
       rm -rf source_file
1
DevonDahon