Impossibile rimuovere il file: "La struttura deve essere pulita"


22

Ho un disco rigido esterno che è crittografato tramite LUKS. Contiene un ext4 fs.

Ho appena ricevuto un errore da rsync per un file che si trova su questa unità:

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

Se provo a eliminare il file ottengo lo stesso errore:

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

Qualcuno sa cosa posso fare per rimuovere il file e risolvere i problemi relativi all'unità / fs (se ce ne sono)?

Risposte:


23

Ciò è fortemente indicativo di corruzione del file system. Dovresti smontare, fare un backup settoriale del tuo disco, quindi eseguire e2fsck per vedere cosa succede. Se si verifica un grave danneggiamento, in seguito potresti essere felice di aver eseguito un backup a livello di settore prima di consentire a e2fsck di manomettere i dati.


Ho fatto quello che mi hai suggerito. e2fsck ha corretto alcuni errori fs. Sembra che io sia tornato alla normalità. Thx =)
Rotareti il

Consiglio vivamente alle persone di usare le GUI come ad esempio gpartedper fare questo. Gparted esegue comunque il wrapping di e2fsck (nel caso del controllo di una partizione), ma l'interfaccia grafica rende molto più semplice la selezione del disco rigido appropriato, oltre a garantire l'esecuzione di questi strumenti con gli argomenti corretti. Con argomenti sbagliati si rischia una grave perdita di dati!
Qqwy

7

Se aiuta qualcuno, ho avuto un problema simile (backup rsync / rsnapshot, su un file interessato). Ho pubblicato il mio problema / soluzione, qui:

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

SOMMARIO:

errore di backup rsnapshot (rsync) sul sistema arch linux x86_64; un file corrotto e profondamente annidato stava lanciando quell'errore, mostrato anche quando ho provato a eliminare quel file:

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

Ecco il problema:

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!!

[Vedi anche: https://www.reddit.com/r/linuxquestions/comments/4b47r2/has_anyone_ever_gotten_structure_needs_cleaning/ ]

La mia unità di backup è / dev / sda1.

sudo umount /dev/sda1

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

Riavviato: tutto sembra a posto. Andato in unità di backup, eliminato quel file problematico:

/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 ?!

[Aggiornamento: sì; che ha funzionato: i miei backup funzionano di nuovo normalmente! :-)]


2

I file system a volte non sono in ordine e devono essere puliti. Questo può essere fatto con il comando fsck . Ma ricorda, devi eseguire fsck solo su partizioni non montate per evitare il rischio di corruzione dei file.

Se il tuo file system è ext4, prova a eseguire questo comando:

fsck -AR -t ext4 -y

0

È normale errore quando si tenta di rimuovere .Trash-0 se si tenta di rimuovere Windows nella codifica del file system CP1251 sul sistema Linux. Quindi fs è corrotto ma questo non lo farà. Fs di Windows è sempre corrotto come visto da Linux. Ma non è così. Puoi provare ad aprire questo file da Windows OS. Tutto andrà bene. E poi rimuoverlo in Windows. E solo dopo quella spazzatura pulita.


1
Non è una soluzione: è un'unità LUKS crittografata con LUKS. Secondo me (o almeno provare ad accedervi) da Windows non è la migliore idea.
mrc02_kr,

-1

tutti!! risolvo questo problema con questo comando nella mia shell proxmox

pct stop 100 ## ferma il contenitore

pct fsck 100 ## fsck container, questo ripara il problema, su alcuni file di problemi che sono corrotti sul sistema container

pct start 100 ## avvia il contenitore, ok, ora fai il backup e tutto va bene !!

Grazie a tutti, Chuck


1
Quindi la tua risposta è: fermare qualsiasi software che potrebbe utilizzare il disco, eseguirlo fscke riprenderlo utilizzando il disco. In cosa differisce dalla risposta di DepressedDaniel ?
G-Man dice "Ripristina Monica" il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.