操作远程文件时 CIFS 安装返回错误(文件存在、系统调用中断)

操作远程文件时 CIFS 安装返回错误(文件存在、系统调用中断)

我需要替换位于 CIFS 安装 (NTFS NAS) 中的文件中的字符串。它安装有

sudo mount -t cifs -o rw,guest,vers=1.0 //192.168.1.1/hdd /hdd

直到一周前我才遇到这个问题,但我没有更改任何安装选项


如果我跑sed -i 's/oldstring/newstring/' /hdd/file我会得到

sed: preserving permissions for ‘/hdd/sedgtQccm’: Not a directory
sed: cannot rename /hdd/sedgtQccm: File exists

如果我跑sed 's/oldstring/newstring/' /hdd/file > /hdd/file.tmp && mv /hdd/file.tmp /hdd/file我会得到

mv: cannot move '/hdd/file.tmp' to '/hdd/file': File exists

如果我跑步 sed 's/oldstring/newstring/' /hdd/file > /hdd/file.tmp && rsync /hdd/file.tmp /hdd/file我会得到

rsync: [receiver] rename "/hdd/file.tmp.GMn4i1" -> "file": File exists (17)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1287) [sender=3.2.2]

如果我收到这些错误

  • 这两个文件都是远程的
  • file 是远程的,file.tmp 是本地的

我不明白如果

  • 两个文件都是本地的
  • file 是本地的,file.tmp 是远程的

还值得一提的是,如果我下载一个大文件,我会得到

write /hdd/largefilefromweb: interrupted system call

如果我几乎每小时播放我的音乐,我就会得到

Encountered error while transfering /hdd/track.mp3: Read error: Interrupted system call

编辑: 的解决方法是在sed执行第二个命令之前处理该文件:mvrsyncrm

sed 's/oldstring/newstring/' /hdd/file > /hdd/file.tmp && rm /hdd/file && mv /hdd/file.tmp /hdd/file
# instead of
sed 's/oldstring/newstring/' /hdd/file > /hdd/file.tmp && mv /hdd/file.tmp /hdd/file

答案1

关于“文件存在”问题,如这个服务器故障问题,我相信这是最近内核的回归,并降级以5.7.7避免目前的问题。

相关内容