我的 中有以下条目/etc/fstab
:
//fritz.box/fritz.nas /mnt/smb/fritz.nas cifs user,cache=loose,nohandlecache,username=name,workgroup=WORKGROUP,password=pwd,vers=3.0 0 0
安装工作完全正常,但是当我想将文件从服务器复制到本地计算机时,出现以下错误:
cp: cannot open 'file.JPG' for reading: Stale file handle
或者如果我使用 rsync:
rsync: [sender] send_files failed to open "path/to/file.JPG": Stale file handle (116)
937.29K 100% 915.32MB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 88 bytes received 35 bytes 246.00 bytes/sec
total size is 937.29K speedup is 7,803.09
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender=v3.2.3]
如果我将 smb 版本设置为 1,错误就会消失(由于已知的安全问题,我希望避免这种情况)。
我已经尝试通过缓存更改一些内容(因为https://forums.unraid.net/topic/86707-cifs-smb-stale-file-handle/表明这是导致问题的原因),但不起作用。 (已经cache=none
在 中尝试过fstab
)
有什么想法可能导致此问题(也许不是缓存)或者我在尝试关闭缓存时做错了什么?
编辑:测试下载文件smbclient
(提前禁用 SMBv1)
答案1
从问题中可以看出,可以挂载成功,并且访问文件也smbclient
可以。我建议添加noserverino
安装选项。
noserverino
处理服务器无法为每个文件生成唯一索引节点号的情况。在 CIFS/SMB 中,文件几乎总是通过名称来访问(打开),并且不需要文件系统能够为每个文件保留持久标识符(除了其名称)。
有些服务器将 inode 编号填为 0(错误),导致无法区分文件。
所以noserverino
只是告诉系统目标不是 INODE 服务器,因此 INODE 将由客户端生成。