![无法删除文件:“结构需要清洁”](https://linux22.com/image/101066/%E6%97%A0%E6%B3%95%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%EF%BC%9A%E2%80%9C%E7%BB%93%E6%9E%84%E9%9C%80%E8%A6%81%E6%B8%85%E6%B4%81%E2%80%9D.png)
我有一个通过 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。但是当我重新启动系统时,文件就消失了,备份成功了。我不知道为什么会这样,但至少这是一个简单的修复方法,并且值得先尝试重新启动。