linux - smb/cifs 过时的 cp:无法打开“file.JPG”进行读取:过时的文件句柄

linux - smb/cifs 过时的 cp:无法打开“file.JPG”进行读取:过时的文件句柄

我的 中有以下条目/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)

删除了 SMBv1 功能

SMB客户端工作

答案1

从问题中可以看出,可以挂载成功,并且访问文件也smbclient可以。我建议添加noserverino安装选项。

noserverino处理服务器无法为每个文件生成唯一索引节点号的情况。在 CIFS/SMB 中,文件几乎总是通过名称来访问(打开),并且不需要文件系统能够为每个文件保留持久标识符(除了其名称)。

有些服务器将 inode 编号填为 0(错误),导致无法区分文件。

所以noserverino只是告诉系统目标不是 INODE 服务器,因此 INODE 将由客户端生成。

相关内容