我尝试使用以下命令将文件从一个目录移动到另一个目录(在 CIFS 挂载的文件系统中):
mv /mnt/development/Backup/NagiosServer/latest/* /mnt/development/Backup/NagiosServer/daily/
这会产生错误消息:
mv: '/mnt/development/Backup/NagiosServer/latest/20190512-backup.zip' and '/mnt/development/Backup/NagiosServer/daily/20190512-backup.zip' are the same file
此时.../daily/目录中的目标文件肯定不存在。
这是错误发生后的相关目录列表:
nagios@nagios-server:~$ mv /mnt/development/Backup/NagiosServer/latest/* /mnt/development/Backup/NagiosServer/daily
mv: '/mnt/development/Backup/NagiosServer/latest/20190514-backup.zip' and '/mnt/development/Backup/NagiosServer/daily/20190514-backup.zip' are the same file
nagios@nagios-server:~$ ls -lsha /mnt/development/Backup/NagiosServer/latest/
total 3.5G
0 drwxr-xr-x 2 nagios root 0 May 15 08:00 .
0 drwxr-xr-x 2 nagios root 0 May 13 15:15 ..
3.5G -rwxr-xr-x 1 nagios root 3.5G May 14 17:13 20190514-backup.zip
nagios@nagios-server:~$ ls -lsha /mnt/development/Backup/NagiosServer/daily
total 18G
4.0K drwxr-xr-x 2 nagios root 4.0K May 15 08:00 .
0 drwxr-xr-x 2 nagios root 0 May 13 15:15 ..
3.5G -rwxr-xr-x 1 nagios root 3.5G May 8 17:12 20190508-backup.zip
3.5G -rwxr-xr-x 1 nagios root 3.5G May 9 17:12 20190509-backup.zip
3.5G -rwxr-xr-x 1 nagios root 3.5G May 10 17:12 20190510-backup.zip
3.5G -rwxr-xr-x 1 nagios root 3.5G May 11 17:14 20190511-backup.zip
3.5G -rwxr-xr-x 1 nagios root 3.5G May 12 17:12 20190512-backup.zip
卸载的挂载点列表没有显示任何内容:
nagios@nagios-server:~$ ls /mnt/development/
nagios@nagios-server:~$
我按照建议发现这里禁用 CIFS 缓存,此方法有效,但仅在第一次尝试 mv 时有效。此后,它会失败并显示相同的错误消息。
这里发生了什么?
我在 Ubuntu 18.04 下运行,挂载的 CIFS 文件系统位于远程 Windows 10 计算机上。此外,Windows 计算机正在运行 VirtualBox VM,该 VM 也运行 Ubuntu 18.04。从 VM 运行时,mv 命令可以正常工作。
答案1
它们是同一个文件,因为在移动过程中这些文件会发生冲突。如果语言文件名被用来代替。
这是在警告你,你正在将文件从源移动到目标,而该文件或文件名在目标中已经存在。这意味着你可能会丢失数据。这个现有文件将被覆盖。
您可以使用--interactive
或--force
标志来改变这种行为,但您必须明白自己在做什么。
$ man mv
...
-f, --force
do not prompt before overwriting
-i, --interactive
prompt before overwrite
-n, --no-clobber
do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
首次发出命令时,一些文件会从源移动到目标,直到要移动此文件。此时,会mv
出现错误并警告您有关情况。请注意,此时您尚未完成移动。您没有复制,因此原始目录中可能不存在许多源文件。
如果您知道您不想要目标中当前的数据/mnt/development/Backup/NagiosServer/daily/20190512-backup.zip
,请在发出命令之前将其删除mv
,或强制覆盖现有文件。
我建议您也研究rsync
一下它的功能。