FAQ:Arktur4/UserDateien
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.