Cifs
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)
從問題中我們看到可以掛載成功,並且可以訪問文件
smbclient
。我建議添加noserverino
到安裝選項。此選項處理伺服器無法為每個文件生成唯一 inode 編號的情況。在 CIFS/SMB 中,文件幾乎總是按名稱訪問(打開),並且文件系統不需要能夠為每個文件保留一個持久標識符(除了其名稱)。
一些伺服器為 inode 編號(錯誤地)填充 0,從而無法區分文件。
所以
noserverino
簡單地告訴系統目的地不是 INODE 伺服器,因此 INODE 將由客戶端生成。