mv:设备间移动使将目录移动到同名目录是不同的操作?

kag*_*san 7 mv

鉴于:

# mv /mnt/hard/git-src/ /usr/portage/distfiles/

mv:设备间移动失败: /mnt/hard/git-src/' to /usr/portage/distfiles/git-src';无法删除目标:是一个目录

cd /tmp; mkdir ab; mdkir a/cb/c;

触摸 a/c/1 b/c/1

mv a/cb/ mv: 不能移动a/c' tob/c': 文件存在

rm a/c/1 b/c/1

mv a/cb/

因此,当目录包含相似文件时,将目录移动到同名目录是“文件存在”。使用不同分区时将其标记为“设备间移动”有什么意义?

Gil*_*il' 9

mv在同一文件系统上意味着将单个目录条目从一个目录移动到另一个目录。mv跨文件系统意味着复制整个源树并在复制后删除源文件。这两种情况下的算法和代码不同,许多故障模式也不同,因此mv在执行跨文件系统移动时,在错误消息中明确说明。

(这里,在同一个文件系统上,它是一个rename返回错误的系统调用。对于跨文件系统移动,它是一个mkdir调用,作为重新创建目录树的一部分。)