Cifs

linux - smb/cifs 陳舊的 cp:無法打開“file.JPG”進行閱讀:陳舊的文件句柄

  • January 9, 2021

我的 中有以下條目/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=nonefstab

有什麼想法可能導致這種情況(可能不是記憶體)或者我在嘗試關閉記憶體時做錯了什麼?

編輯:測試下載文件smbclient(預先禁用 SMBv1)

刪除了 SMBv1 功能

smbclient 工作

從問題中我們看到可以掛載成功,並且可以訪問文件smbclient。我建議添加noserverino到安裝選項。

此選項處理伺服器無法為每個文件生成唯一 inode 編號的情況。在 CIFS/SMB 中,文件幾乎總是按名稱訪問(打開),並且文件系統不需要能夠為每個文件保留一個持久標識符(除了其名稱)。

一些伺服器為 inode 編號(錯誤地)填充 0,從而無法區分文件。

所以noserverino簡單地告訴系統目的地不是 INODE 伺服器,因此 INODE 將由客戶端生成。

引用自:https://unix.stackexchange.com/questions/606406