Answers:
我认为该info
页面的简介可以回答您的所有问题:
它首先使用一些与cp -a相同的代码来复制请求的目录和文件,然后(假设复制成功)将其删除。如果复制失败,那么将删除复制到目标分区的部分。如果要将三个目录从一个分区复制到另一个分区,并且第一个目录的复制成功,但是第二个目录没有成功,则第一个将保留在目标分区上,第二个和第三个将保留在原始分区上。
由于数据已保留,因此恢复不成问题。我不知道它试图成为原子的程度(mkdir
例如,需要进行源检查)或它是否在其域中(相对于内核),但是如果中断已经发生,而它已经删除了原子,则可能会损坏。资源。到那时,您已经在目标目录中有了一个很好的副本,因此简单的字节大小检查就可以解决问题。
编辑:我对使用创建的巨大文件(几个G)做了一些测试dd
,但没有最终结果。从来没有设法仅复制少数几个源—我要么取消了整个操作(太快了),要么后来由于磁盘缓存和良好的文件系统设计而根本没有任何机会(我的^ C总是在成功移动之后着陆) )。
cp -a
已经是递归的,因此我怀疑它是否适用于遍历树时发现的单个文件和目录。稍后会做一些测试。
mv src1 src2 dst
,这方面的作品相似mv src1 dst; mv src2 dst
并且每个人mv src dst
都像cp -a src dst && rm -rf src
?