使用以下命令在我的便携式硬盘上搜索具有硬链接的文件:
$ find . ! -type d -links +1 -ls | sort -n
我得到以下形式的输出(有数百个其他文件)
9336 244476 -rw------- 2 rishi rishi 250342060 Feb 18 15:48 ./unigram_mvt_0.001_9_4_0.001
这表明 inode 为 9336 的文件有 2 个硬链接。
尝试使用
$ find /media/rishi/ -xdev -inum 9336
我得到如下所示的输出
/media/rishi/mvp/unigram_mvt_0.001_9_4_0.001
这表明只有 inode 为 9336 的文件
我自己没有创建硬链接。这些文件是通过我电脑上的模拟在本地磁盘上生成的。我可能复制了文件进行备份,这可能会创建这些链接。这些文件目前在我的便携式硬盘上
由于我近期不需要这些数据,所以当我遇到硬链接警告并尝试查看它时,我正在使用 gzip 对其进行压缩。
硬链接计数是否不正确,或者我无法找到其他硬链接文件?
编辑:
文件系统是 fuseblk
尝试过的事情:
- 使用sudo进行搜索。结果:与之前相同
- 使用“gzip -f”压缩文件。结果:磁盘上的可用空间增加了,所以我猜没有其他文件被硬链接
- 使用 find -name 检查它是否抛出 Hardlink count is error 警告。结果:无警告
- 检查文件系统。我认为问题就在这里,但我无法解决
以下是磁盘检查的输出:
$ sudo ntfsck /dev/sdb1
Unsupported: replay_log()
Unsupported: check_volume()
Checking 199424 MFT records.
Unsupported cases found.
$ sudo ntfsfix /dev/sdb1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
NTFS volume version is 3.1.
NTFS partition /dev/sdb1 was processed successfully.
即使运行后ntfsfix
,我仍然收到同样的错误ntfsck
答案1
问题出在文件系统上。感谢@terdon 的提示。
显然,Linux 对 NTFS 的支持是有限的,因为即使运行 ntfsfix 后错误仍然存在。
从提升的 CMD 提示符运行chkdsk /F /R /X F:
其中 F:是驱动器号,更正了索引条目并为我解决了这个问题。