![为什么指定 --remove-source-files 时 rsync 不利用 mv 命令?](https://linux22.com/image/54715/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%8C%87%E5%AE%9A%20--remove-source-files%20%E6%97%B6%20rsync%20%E4%B8%8D%E5%88%A9%E7%94%A8%20mv%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
假设我想移动文件系统中的一棵树,例如
/path/to/a
a.txt
b.txt
使用(3.0.9协议版本30)到另一个位置rsync
,例如使用rsync -a --remove-source-files /path/to/a/ /path/to/b/
,为什么rsync
没有发现/path/to/a和/path/to/b在保存文件系统上(rsync
绝对能够做到这一点,否则有没有-x
争论 - 该功能必须在没有-x
) 规范的情况下可用,并使用mv
可能受益于文件系统级别操作的命令,例如更改链接和 inode,而不是读取、写入和删除树中的所有文件?
编辑1:mv
我在 ext4 和 reiserfs 文件系统上体验了读写而不是使用。我不是在寻找诸如“它根本不存在,欢迎补丁”之类的输入,而是寻找是否有一些关于设计或用例的明确且可能记录或讨论的决策(例如吉尔斯的回答)。
答案1
Rsync 经常用于通过网络链接复制文件。它还用于将文件复制到备份介质。删除源文件是 rsync 的一种相当罕见的用法。保留元数据是普遍要求的,但也是可选的。因此,rsync 需要结合一些不寻常的用例,才有机会将文件从源移动到目标,而不是复制和删除。对于很少发生的事情,检测可能的情况需要额外的复杂性。