FAQ:Arktur4/UserDateien
Seite wird nicht gesperrt: Hier können mitarbeitswillige Autoren ihre Artikel und Ergänzungen einbringen. Wenn Sie mitarbeiten wollen, dann können Sie dafür jederzeit einen Account beantragen. Schreibrecht in dieser Dokumentation haben nur eingetragene Nutzer. |
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.