给定/mnt/source/
和/mnt/target/
两个不同的地方/文件系统。
mv /mnt/source/dir /mnt/target/
- 它在半路上耗尽了空间(并停止了)
想象一下,其中
/mnt/source/dir
充满了目录、子目录和文件,当mv
出现故障时,是否会从中删除任何文件/mnt/source/dir
?我可以安全地删除我的失败(
rm /mnt/target/dir
),在文件系统上准备更多空间/mnt/target/
,然后再次尝试移动操作吗?或者:如果我无法在
/mnt/target/
文件系统上准备更多空间,我是否应该进行某种“撤消”mv /mnt/target/dir/* /mnt/source/dir/
(使用文件管理器覆盖目标文件)操作,以便我可以改变主意而根本不尝试移动?
答案1
文件是否从 /mnt/source/foo 中删除?
直到命令报告移动成功。
$ $ mv --version
mv (GNU coreutils) 8.25
和
$ info mv
了解发生的情况:
mv
可以将任何类型的文件从一个文件系统移动到另一个文件系统。在 fileutils 4.0 版本之前,mv
只能在文件系统之间移动常规文件。例如,现在mv
可以将整个目录层次结构(包括特殊设备文件)从一个分区移动到另一个分区。它首先使用与复制请求的目录和文件相同的代码cp -a
,然后(假设复制成功)删除原始文件。如果复制失败,则复制到目标分区的部分将被删除。 如果您将三个目录从一个分区复制到另一个分区,并且第一个目录的复制成功,但第二个目录的复制失败,则第一个目录将留在目标分区上,第二个和第三个目录将留在原始分区上。
注意第二部分以粗体显示:这是每次mv
执行时都会做的
mv a b c /dir/
将删除“a”和“b”之间的“a”。