rm: .filename nicht entfernt: Disc-Kontingent überschritten

6963
arsenal

Dies ist der vollständige Dateiname, den ich ls -ltaus meinem aktuellen Verzeichnis bekomme .

EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz 

Dateinamen bestehen ebenfalls aus Datum. In der obigen Datei ist das Datum 20120811.

Ich versuche also alle Dateien zu löschen, die mit beginnen EXPORT_v1x0und deren Datum kleiner als ist 20120825.

Ich verwende das folgende Skript von der Befehlszeile aus, um die Dateien zu löschen

find . -name "EXPORT_v1x0*" | awk -F'_' '$3<20120825' | xargs rm 

Immer wenn ich den obigen Befehl zum Löschen der Dateien verwende, bekomme ich immer die folgende Ausnahme.

rm: ./EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz not removed: Disc quota exceeded 

Kann mir jemand sagen, was diese Ausnahme bedeutet? Und wie lässt sich dieses Problem überwinden?

Ich betreibe SunOS.

bash-3.00$ uname -a SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc 
3
Maybe it helps to *truncate* the file first, with `echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz`. Anton Kovalenko vor 11 Jahren 0
Welche Version von SunOS verwenden Sie? Was ist die Ausgabe von "Quota -v"? Keith Thompson vor 11 Jahren 0
Die Frage wurde auch mit dem Versionsnamen aktualisiert. Ich verwende '5.10', wenn ich den Versionsnamen richtig interpretiere. Und ich habe "quota -v" ausprobiert, aber es heißt "quota: command not found". Warum? vor 11 Jahren 0
@AntonKovalenko, Can you tell me how should I truncate the files. I tried the way you told me as well. `echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz`. Again I got same `Disc Quota Exception as well` vor 11 Jahren 0
Du bist bei ZFS. do `cp / dev / null EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz` und Sie sollten die Datei danach rm. Petesh vor 11 Jahren 0
Soll ich cp / dev / null für alle Dateien oder nur eine Datei machen? Ich habe das nur an einer Datei ausprobiert, aber es gibt mir die gleiche Ausnahme, sobald ich `cp / dev / null filename 'gemacht habe. "Disc-Quote überschritten". vor 11 Jahren 0
Alle Dateien Es ist ein ZFS-Feature, bei dem Sie etwas mehr Speicherplatz benötigen, bevor Sie die Dateien rm können. Petesh vor 11 Jahren 1
Wie kann ich also dieses dev / null-Ding in mein gesamtes Skript einfügen, das ich in meiner Frage verwende? Ich habe mehrere Kombinationen ausprobiert, aber ich kann das Ding nicht zum Laufen bringen. vor 11 Jahren 0

4 Antworten auf die Frage

4
Paul Kehrer

You'll need to do something like cat /dev/null > file (or echo > file) to get back under the quota such that you can use rm again.

Danke Paul für den Vorschlag. Wenn ich dieses `/ dev / null` zu meinem Befehl hinzufügen muss, wie in meiner Frage erwähnt, wie sollte ich es dann ändern, damit ich diese Ausnahme nicht noch einmal bekomme? Irgendwelche Gedanken? vor 11 Jahren 0
Sie sollten es für eine * einzelne * Datei (vorzugsweise eine große) versuchen, um die Quote zu unterschreiten. Dann werden `find` und` rm` wieder funktionieren. Ich weiß nicht, vielleicht möchte eine Dateilöschung zuerst einen Block für das Verzeichnis zuweisen (ja, merkwürdig). Anton Kovalenko vor 11 Jahren 0
Anton ist richtig: Am besten schneiden Sie eine Datei ab und führen Sie dann den vollständigen Befehl aus, um alle zu rm (rm sollte funktionieren, sobald Sie unter dem Kontingent sind). Sie können Ihre Suche zuerst mit der Markierung -size ausführen und damit die Kandidaten für das Abschneiden identifizieren. vor 11 Jahren 0
I tried truncating the files as you told me. `echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz`. Again I got same `Disc Quota Exception as well`. vor 11 Jahren 3
2
myradio

Löschen Sie manuell die kleinsten Dateien, die Sie finden, bis die Quote unterschritten wird. Anschließend können Sie sie mit den Standardmethoden löschen.

Ich weiß nicht, warum die Antwort von @Volodymyr Savchenko abgelehnt wurde. Eigentlich war das der einzige Trick, der auch für mich funktioniert hat.

Ich arbeite in einem HPC und mir ging die Quote aus.

Fast alle Befehle zu trocknen dauerte eine Ewigkeit.

- rsyncRemote mit --remove-source-files hat nicht funktioniert:

rsync -avz --remove-source-files -e "ssh -p ####" usr@host:path/file.dat ./ receiving file list ... done rsync: sender failed to remove file.dat: Disk quota exceeded (122) 

-rm Die meisten Dateien funktionierten nicht:

[usr@server ~]$ rm path/file.dat rm: cannot remove 'path/file.dat': Disk quota exceeded 

-tun

cat /dev/null path/file 

würde anscheinend funktionieren, aber rm'ing würde es nicht (noch mit der Quote überschritten Fehlermeldung) (was ich nicht verstehen kann, warum).

Das Löschen von Tinny-Dateien, die ich nur "angefasst" hatte (dh leere Dateien mit sehr geringer Größe), funktionierte trotzdem und gab mir die Möglichkeit, die Quote zu unterschreiten und Dateien normal löschen zu können.

0
ventsyv

Ich denke, Sie haben entweder keine Berechtigung zum Entfernen der Datei oder sie ist schreibgeschützt. Versuchen Sie es mit rm -f. Die Quota-Nachricht stammt von etwas, das versucht, auf die Festplatte zu schreiben.

You can actually use disk in the sense that you have to write to a directory when you call unlink - the syscall rm uses. Over quota means no write access. jim mcnamara vor 11 Jahren 0
-1
Volodymyr Savchenko

Ich hatte das gleiche Problem und keine der normalerweise vorgeschlagenen Lösungen, die Sie aufführen, hat funktioniert.

Mir wurde jedoch klar, dass es möglich war, die kleinsten Dateien <1 KB zu löschen. Ich musste nur genug kleine Dateien finden, um wieder große Dateien mit rm bereinigen zu können.