399 文字
2 分
【Linux】mvとcp+rmの違い
ファイルをmvするのと、cpしてから元ファイルをrmで消すのは一見して同じ挙動のように見えます。自分もそう思っていたのですが、微妙に挙動が異なることに気づいたので、違いをまとめます。
結論
先に結論から書いておくと、mvとcp+rmの違いは、
- mvはinode番号が変わらない
- cp+rmはinode番号が変わる
です。
検証
それではinode番号について、mvの場合とcp+rmの場合とで検証してみます。
mvの場合
ファイルを用意してinode番号を確認します。 inode番号は、lsコマンドのiオプション使えば確認することができます。
# ファイルを作成$ touch hoge.txt
# inode番号を確認$ ls -i hoge.txt1085901 hoge.txtmvでファイルを移動して、移動後のファイルのinode番号を確認します。
$ mv hoge.txt fuga.txt$ ls -i fuga.txt1085901 fuga.txtinode番号が変わっていないことが確認できました。
cp + rmの場合
inode番号を確認します。
# コピー前のinode番号を確認$ ls -i fuga.txt1085901 fuga.txtcpでファイルをコピーして、rmでコピー前のファイルを削除します。その後、コピー後のファイルのinode番号を確認します。
$ cp fuga.txt piyo.txt$ rm fuga.txt
$ ls -i piyo.txt1084259 piyo.txtinode番号が変わったことを確認できました。
リンク