缘起
mv是多么简单的一个命令啊,但是,获取有些东西你真的不知道。
一个同事mv big_dir_of_small_file to_other_disk ; 明明看着目标地址的空间使用在增加,但就是不见源地址的空间使用在减少,为什么呢?
lsof 查了一下,移走的文件没有立即删除。那就应该是全部移完之后再删除了。
因为文件实在太多,如果中断了程序,会是什么结果呢?
猜测:
- 删除移过的文件,保留没有移动的文件
- 那么,移动一半的文件是删除还是不删除呢?
参看: http://lingrok.org/xref/coreutils/src/mv.c
解疑:
其实代码很简单,就是先copy,最后在删除,根本没处理执行一半时被中断做何处理;所以,如果中断的话,就是:copy多少算多少,不删除任何文件。