通过 Bash 脚本远程重命名 Samba 共享上的文件

通过 Bash 脚本远程重命名 Samba 共享上的文件

我在 Cygwin 下运行 Bash 脚本,但这个问题适用范围更广。

我有一个远程文件://someremoteserver/somefile.db

该“//”路径位于 Cygwin 下 - 它本质上是 Windows 网络上的 UNC 路径名(在本例中),因此称之为 Samba。

该文件很大:50 GB。

我想在远端重命名所有内容:

mv //someremoteserver/somefile.db //someremoteserver/someotherfile.db

我希望这个过程只需要 5 纳秒,因为这只是重命名。但是它却需要两个小时。这似乎是因为它实际上是通过本地机器的内存空间复制文件——它在 LAN 上移动了 50 GB(如果是在这里复制,在那里复制,则可能移动 100 GB)。

通常在本地系统上,“mv”是即时的,无论文件大小如何,因为它只更新 inode/文件表。

当文件位于远程 Samba 共享上时,有没有好的方法可以做同样的事情?

答案1

通常在本地系统上,“mv”是即时的,无论文件大小如何,因为它只更新 inode/文件表。

没错。我想你会想从包含文件系统的主机调用 rename/mv。

相关内容