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


22

我有一个通过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

有谁知道我该怎么做才能删除文件并修复驱动器/ fs的相关问题(如果有)?

Answers:


23

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


做了你的建议。e2fsck修复了一些fs错误。好像我恢复了正常。Thx =)
Rotareti '16

我强烈建议人们像这样使用GUI gparted。Gparted仍然包装e2fsck(在检查分区的情况下),但是图形界面使选择合适的硬盘变得容易得多,并且可以确保使用正确的参数运行这些工具。错误的论点可能会导致数据严重丢失!
Qqwy

7

如果对任何人都有用,我会遇到类似的问题(在受影响的文件上进行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/victoria.a.stuart@gmail.com/[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/victoria.a.stuart@gmail.com/\[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_structure_needs_cleaning/ ]

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

sudo umount /dev/sda1

sudo fsck.ext4 /dev/sda1  ## << accepted suggested fixes

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

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

QED ?!

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


2

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

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

fsck -AR -t ext4 -y

0

如果尝试在Linux系统上尝试以编码CP1251文件系统的方式删除Windows,则尝试删除.Trash-0时通常会出错。因此,fs已损坏,但这并不容易。Windows的Fs总是损坏,如从Linux中看到的那样。但事实并非如此。您可以尝试从Windows操作系统打开此文件。一切都会好起来的。然后在Windows中将其删除。并且只有在那干净的垃圾之后。


1
这不是解决方案:它是使用LUKS加密的LUKS驱动器。我认为从Windows访问(或至少尝试访问)它不是最好的主意。
mrc02_kr

-1

所有!!我在我的proxmox shell中使用此命令修复了此问题

pct stop 100 ##停止容器

pct fsck 100 ## fsck容器,此修复问题,在某些问题上,容器系统上的文件已损坏

pct start 100 ##启动容器,好的,现在备份,一切都很好!!

谢谢,查克


1
因此,您的答案是—停止可能正在使用该磁盘的所有软件,运行fsck,然后继续使用该磁盘。这与DepressedDaniel的答案有何不同?
G-Man说'Resstate Monica''Nov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.