无法删除文件:“结构需要清洁”

无法删除文件:“结构需要清洁”

我有一个通过 LUKS 加密的外部硬盘。它包含一个 ext4 fs。

我刚刚从 rsync 收到位于此驱动器上的文件的错误:

rsync: readlink_stat("/home/some/dir/items.json") failed: Structure needs cleaning (117)

如果我尝试删除该文件,我会收到相同的错误:

rm /home/some/dir/items.json
rm: cannot remove ‘//home/some/dir/items.json’: Structure needs cleaning

有谁知道我可以做什么来删除文件并修复驱动器/文件系统的相关问题(如果有)?

答案1

这强烈表明文件系统损坏。您应该卸载磁盘,对磁盘进行扇区级备份,然后运行 ​​e2fsck 以查看发生了什么。如果存在严重损坏,您可能会庆幸在让 e2fsck 篡改数据之前进行了扇区级备份。

答案2

如果它对任何人有帮助,我也遇到了类似的问题(rsync/rsnapshot 备份,在受影响的文件上)。我在这里发布了我的问题/解决方案:

https://ubuntuforums.org/showthread.php?t=2348768&p=13627299#post13627299

概括:

arch linux x86_64 系统上的 rsnapshot (rsync) 备份错误;损坏的深度嵌套文件引发了该错误,当我尝试删除该文件时也会显示该错误:

sudo rm -fR hourly.5/

rm: cannot remove 'hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak': Structure needs cleaning

问题是这样的:

cd mnt/Vancouver/temp/temp\ -\ old/temp\ -\ 09\ \(Dec\ 07\,\ 2014\ -\ Sep\ 02\,\ 2015\)/a_OLD-gmail/[email protected]/\[Gmail\]/LINUX/rsync\,\ rsnapshot\;\ Other\ backups/

ls -l

ls: cannot access '19.bak': Structure needs cleaning
total 0
-????????? ? ? ? ?  ? 19.bak        ## << THAT IS THE PROBLEM!!

[另请参阅:https://www.reddit.com/r/linuxquestions/comments/4b47r2/has_anyone_ever_gotten_struction_needs_cleaning/]

我的备份驱动器是/dev/sda1。

sudo umount /dev/sda1

sudo fsck.ext4 /dev/sda1  ## << accepted suggested fixes
  • 编辑 (2023-02):注意事项:您不能fsck在 NAS - 网络关联 (RAID) 硬盘驱动器 - 通常在网上出售(亚马逊;...),并且看起来像普通 HDD 上运行;修复 NAS 驱动器需要特殊软件。如果您应用fsck到 NAS HDD,则可能会损坏它。

重新启动:一切似乎都很好。进入备份驱动器,删除有问题的文件:

/mnt/Backups/rsnapshot_backups/hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak

量子ED?!

[更新:是的;有效:我的备份再次正常运行! :-)]

答案3

文件系统有时不正常,需要清理。这可以通过以下方式完成FSCK命令。但请记住,您必须仅对已卸载的分区运行 fsck,以避免文件损坏的风险。

如果您的文件系统是 ext4,请尝试运行以下命令:

fsck -AR -t ext4 -y

答案4

当我尝试删除文件时,我从 rsync 收到相同的错误消息,从 rm 收到相同的错误消息。由于文件系统是根文件系统,因此无法使用 fsck。但是当我重新启动系统时,文件就消失了,备份成功了。我不知道为什么会这样,但至少这是一个简单的修复方法,并且值得先尝试重新启动。

相关内容