尽管将文件连续移动到NFS挂载磁盘,为什么rename()仍然返回false?

Tom*_*Tom 6 php linux file-permissions nfs rename

Invalid argument将文件从本地磁盘移动到NFS挂载磁盘时,我收到警告.尽管出现错误消息,文件仍会成功移动:

Warning: rename(/tmp/image.jpg,/mnt/remote.server-disk1/image.jpg): Invalid argument

安装的磁盘:

$ df
remote.server:/disk1 917G  269M  871G   1% /mnt/remote.server-disk1
Run Code Online (Sandbox Code Playgroud)

远程服务器上导出的磁盘:

$ cat /etc/exports
/disk1 remote.server(rw,sync,root_squash,secure,crossmnt,anonuid=504,anongid=504)
Run Code Online (Sandbox Code Playgroud)

重命名()之前本地磁盘上的文件:

$ stat /tmp/image.jpg
File: `image.jpg'
Size: 2105          Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d  Inode: 33556339    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (  501/  apache)   Gid: (  501/  apache)
...
Run Code Online (Sandbox Code Playgroud)

重命名()后远程磁盘上的文件:

$ stat /disk1/image.jpg
File: `image.jpg'
Size: 2105          Blocks: 8          IO Block: 4096   regular file
Device: 821h/2081d  Inode: 34603214    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (  501/  apache)   Gid: (  501/  apache)
...
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

But*_*ass 7

Unix您无法重命名或在文件系统之间移动时,您必须文件从一个源位置复制目标位置,然后删除源.这将解释您收到的错误消息.然而,似乎还不清楚为什么它仍然采取行动.这可能与权限有关,或者NFS挂载磁盘是本地缓存的.


Zal*_*ali 0

也许是因为你这样做时没有引号

rename(/tmp/image.jpg,/mnt/remote.server-disk1/image.jpg);

尝试添加引号

rename('/tmp/image.jpg', '/mnt/remote.server-disk1/image.jpg');