这篇文章有点长,抱歉。简短的版本是:我有一个无法删除的目录。当我尝试与它交互时,终端给出“输入/输出错误”。我扫描了磁盘以查找错误,但没有发现任何错误。问题的根源似乎是系统认为这是一个链接,而实际上它是一个目录。我该如何删除它?
故事模式:我的桌面上有一个名为“media”的目录,我通过 SSH(fuse/sshfs)将另一个目录挂载到该目录中。目录打开时连接丢失。Finder 崩溃,目录从桌面上消失。但是它仍然在那里:
Desktop mike$ ls -1
media
templates
Desktop mike$ mkdir media
mkdir: media: File exists
我尝试对目录执行的几乎所有操作都会出现“输入/输出”错误:
Desktop mike$ ls -i
ls: media: Input/output error
Desktop mike$ sudo rm -rf media
rm: media: Input/output error
Desktop mike$ sudo unlink media
unlink: media: Input/output error
Desktop mike$ sudo chmod 777 media
chmod: media: Input/output error
Desktop mike$ touch media
touch: media: Input/output error
cd ./media
cd: error retrieving current directory: getcwd: cannot access parent directories: Input/output error
如果我尝试重新挂载远程 SSH 目录,也会得到同样的结果:
fuse:错误的挂载点‘./media/’:输入/输出错误
即使它在桌面或 Finder 中不可见,我也可以搜索并找到它。右键单击搜索结果不会提供删除选项——只有打开和属性。属性显示创建和修改时间(正确)以及一个空白图标。我也可以选择打开该项目,在这种情况下它会给我:
"The alias 'media' can't be opened because the original item can't be found. Delete, Fix, or OK."
当我尝试删除时,同样的对话框不断弹出;选择修复会要求选择要链接到的新项目。执行此操作会报告:“未知错误 -1407”,Google 告诉我这意味着“预期为文件夹,但得到的是文件。”
我可以移动目录,但前提是将其保留在桌面上:
Desktop mike$ mv ./media ./a
Desktop mike$ ls -i
ls: a: Input/output error
Desktop mike$ mv ./a ../
mv: cannot resolve a: /Users/mike/Desktop/a
有什么办法可以删除它吗?或者至少让系统相信这是一个目录而不是链接?
答案1
抱歉,我解决这个问题后没有更新。我感谢所有知情的回复。原来这是一件非常简单的事情。浏览 Linux 留言板时,我发现这是一种通过 sshfs 挂载的已知问题。
https://bbs.archlinux.org/viewtopic.php?id=94725
我遇到了 OP 在该帖子中描述的每一个问题,以及 Finder 隐藏挂载点的问题(也许它无法统计挂载点或其他原因,所以它只是没有显示挂载点)。“...尝试访问断开连接的 sshfs 共享的进程进入不间断睡眠状态。”快速修复是停止 sshfs。“killal sshfs”对我来说就足够了。我想重新启动也可以。
答案2
我刚刚遇到了同样的问题。原来这目前被列为漏洞在 osxfuse 上。解决方法是手动终止 sshfs 进程,然后卸载远程目录。之后,您甚至可以删除本地挂载点。