是否有命令可以在同一驱动器上的 unRAID 共享之间移动文件指针?

问题描述

我创建了一个 Python 脚本来帮助管理 unRAID 服务器上的媒体。新文件自动传输到文件夹中,脚本使用文件夹结构和文件名来确定它们应该移动到的位置,通常是移动到同一驱动器上的另一个共享中。使用 Midnight Commander,这种转移会立即发生。资源管理器中的这个过程或我的脚本使用 shutil.move() 复制文件然后删除原始文件,这对于大文件可能需要很长时间,并且还会在驱动器上创建不必要的读/写。当传输在同一共享上时,它在 Explorer 和 Python 中都是即时的。

简化伪代码 - 在此示例中,Transfer 和 TV 共享在同一磁盘上:

from shutil import move

oldpath = r'\\NAS\Transfer\incoming\test.mkv'
newPath = r'\\NAS\TV\test.mkv'

move(oldpath,newPath)

有没有办法用 Python 移动文件的指针,就像我假设 MC 正在做的那样,而不是物理移动文件

解决方法

为文件赋予新名称同时将其保留在同一文件系统上的底层接口是 os.rename()。如果该调用失败,将无法进行就地重命名。

如果您测试过可以直接在文件服务器上进行有效的本地重命名,但不能通过网络共享,则您可能忽略了网络文件系统的限制(或它的配置方式;使确保从客户端的角度来看,源和目标都在同一个挂载点下,而不仅仅是服务器的。