FAQ:Arktur4/UserDateien

Aus Delixs
Zur Navigation springen Zur Suche springen


Baustelle Archiv: Dieser Artikel beschreibt nicht die Funktionalität des derzeit aktuellen delixs-Servers. Er beschreibt ältere Schulserver-Funktionen und dient dem Zweck der Archivierung.


Alle Dateien eines Nutzers ermitteln

Frage:

Seitdem wir Quota eingeschaltet haben können etliche Schüler irgendwann nicht mehr auf dem Server speichern. Das Löschen von Dateien im eigenen home-Verzeichnis hilft in der Regel. Allerdings haben wohl einige Dateien weitergegeben oder im tmp-Verzeichnis gespeichert, so dass dies mitunter nicht ausreicht und die Schüler wissen es oft nicht mehr (oder wollen es nicht).

Mit welchem Befehl kann ich alle Dateien eines Schülers incl. Verzeichnisnamen auflisten?

Antwort:

Kurzfassung:

 cd /home && find . -uid $(id -u username)

Scriptfassung:

Unten findest Du ein Beispiel-Script. Abspeichern, ausführbar machen mit chmod +x und gut ist.

Wenn Du in der temporären Datei, die Pfade gemäß, Deiner logon.bat änderst, kannst Du die Datei auch gleich dem user mailen :-)


 #!/bin/sh
 usage () {
 echo -n "usage: "
 echo -n `basename $0`
 echo " Benutzer"
 echo
 echo "Das Script ermittelt alle Dateien des Benutzers &"
 echo "speichert sie nach Grösse sortiert in einer"
 echo "temporären Datei."
 }
 if [ "$#" -ne 1 ] ; then
   usage
   exit 0
 fi
 getent passwd $1 1>/dev/null
 RET=$?
 if [ "$RET" -gt 0 ] ; then
   echo "Benutzer $1 existiert nicht!"
       echo "Kann gewählte Aktion nicht ausführen"
       exit 1
 fi
 T=`mktemp -t "$1"XXXXXX`
 find /home/ -xdev -type f -user $1 -exec stat --printf="%s\t%n\n" {} \; >>$T
 sort -gr --key=1 "$T" > "$T"s
 rm "$T"
 echo -n "Nach Größe sortiert, findest Du die Dateien von $1 in: "
 echo "$T"s
 echo
 echo "Die 10 größten werden jetzt angezeigt:"
 head -n10 "$T"s
 echo -n "Nicht vergessen: Du solltest "; echo -n "$T"s;echo " löschen :-)"


-- aus einer Mail von Harry J.



zurück | Hauptseite