我正在尝试连续将许多文件(每分钟约 10 000 个)从 /ramdisk 移动到普通 /ssd ,但并非所有文件都在那里。
当mv /ramdisk/file55 /ssd/file55
由于源不存在而失败时,它是否会尝试在目标中写入任何内容?
我这样问是因为我担心它会磨损目标 SSD,这就是为什么大多数文件都保存在 /ramdisk 中
答案1
回答这个问题的唯一真正方法是查看源代码。实施情况可能会有所不同。
特别是,我假设mv
你指的是由GNU Coreutils。
我不确定我是否理解他们mv
代码中的所有细微差别,但我可以注意到以下事实:
- 其中
src/mv.c
有一个函数do_move(const char *source, const char *dest, const struct cp_options *x)
可能是mv
.该函数调用另一个名为 的函数copy
。 - 在 中
src/copy.c
,copy
调用的函数do_move
基本上是另一个名为 的函数的包装器copy_internal
。 - 在函数的顶部,
copy_internal
它尝试访问stat
源文件。如果失败,它就会退出而不做任何事情。
因此,我认为可以安全地回答:
在通过各种检查之前,尝试访问mv
不存在的文件不会影响目标。