web-dev-qa-db-ja.com

ファイルを削除できません:「構造にはクリーニングが必要です」

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に関連する問題(ある場合)を修正するために私ができることを誰かが知っていますか?

24
Rotareti

これは、ファイルシステムの破損を強く示しています。アンマウントし、ディスクのセクターレベルのバックアップを作成してから、e2fsckを実行して、何が起動しているかを確認します。大きな破損がある場合は、後でe2fsckにデータを改ざんさせる前に、セクターレベルのバックアップを実行できて嬉しいです。

25
DepressedDaniel

それが誰かを助ける場合、私は同様の問題を抱えていました(影響を受けるファイルでの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_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/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak

Q.E.D。?!

[更新:はい。うまくいきました:私のバックアップは再び正常に動作しています! :-)]

8
Victoria Stuart

ファイルシステムは時々秩序がなく、クリーニングが必要です。これはfsckコマンドで実行できます。ただし、ファイル破損のリスクを回避するために、マウントされていないパーティションに対してのみfsckを実行する必要があることを覚えておいてください。

ファイルシステムがext4の場合は、次のコマンドを実行してみてください。

fsck -AR -t ext4 -y
2
Ayush Goyal

LinuxシステムでCP1251ファイルシステムをエンコードしてWindowsを削除しようとすると、.Trash-0を削除しようとすると、通常のエラーが発生します。だからfsは壊れていますが、これは良くありません。 Linuxから見ると、WindowsのFsは常に破損しています。しかしそうではありません。あなたはwindows osからこのファイルを開こうとするかもしれませんすべてはうまくいくでしょう。そして、ウィンドウでそれを削除します。そして、そのきれいなゴミの後だけ。

0
Fillip