Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: RedIce в Feb 10, 2005, 16:54



Титла: quota
Публикувано от: RedIce в Feb 10, 2005, 16:54
така, икак quota на usersko ниво, всичко си бачка перфектно, но имам един проблем...
раздал съм на всеки user по 50 MB място, (сървара е инсталиран отдавна, quotata е сетната отскоро) и с повечето users нямам проблеми... но примерно с 3-4  ми се появява следния проблем

в директорията на usera има макс 20MB
а със repquota -a виждам че въпросния user заема над 50
(както и със quota -s user)
примерно ми покава около 40-50Mb че имам отгоре позволените, предполагам навремето нещо съм копирал от въпросните директори и съм го сложил някаде, ама знам ли и аз каде :)
изчистил съм всички темпове за всеки случай....
и немога и немога да разбера каде са тези фаилове
или можеби проблема е другаде ???
идеи ?

ползвам:
Slackware10 (2.4.26 )
quota-3.12-i486-1
fs: ext3

--
p.s за сега се сещам само за следния начин
ls -laR / >files
и после да гледам кое каде се намира
мога да го grepnna фаила , но има известни неудобсва, самата структора е такава че не показва пътя към всеки фаил, и примерно ако ми искара че нещо е на даден user, после трябва да го търся каде е , или да отварям самия fail, който съм суздал с ls и да видя за коя дир се отнася, понеже структората му е нещо подобно:
Примерен код

root@RedIce:/root head -n 100 test1
/:
total 512
drwxr-xr-x  19 root root   4096 2005-02-10 16:36 ./
drwxr-xr-x  19 root root   4096 2005-02-10 16:36 ../
drwx------   2 root root   4096 2005-01-27 23:45 .screen/
drwxr-xr-x   2 root bin    4096 2004-12-26 19:09 bin/
drwxr-xr-x   2 root root   4096 2004-10-23 17:49 boot/
drwxr-xr-x  15 root root  40960 2005-01-29 03:51 dev/
drwxr-xr-x  33 root root   4096 2005-01-29 15:57 etc/
-rw-r--r--   1 root root      0 2004-10-23 18:05 fst
drwxr-xr-x  21 root root   4096 2005-01-30 20:50 home/

--------- // и т.т и почва наред:

/.screen:
total 8
drwx------   2 root root 4096 2005-01-27 23:45 ./
drwxr-xr-x  19 root root 4096 2005-02-10 16:36 ../

/bin:
total 4596
drwxr-xr-x   2 root bin    4096 2004-12-26 19:09 ./
drwxr-xr-x  19 root root   4096 2005-02-10 16:36 ../
lrwxrwxrwx   1 root root     13 2004-11-10 01:1
4 Mail -> /usr/bin/nail*
-rwxr-xr-x   1 root bin    3024 2004-11-04 00:43 arch*
lrwxrwxrwx   1 root root      4 2004-10-23 17:54 awk -> gawk*
-rwxr-xr-x   1 root bin  666452 2004-11-04 00:30 bash*
lrwxrwxrwx   1 root root      5 2004-10-23 20:29 bunzip2 -> bzip2*
lrwxrwxrwx   1 root root      5 2004-10-23 20:29 bzcat -> bzip2*


доста неудобно ако грпвам фаила нали ?
а да го гледам ред по ред не върви

предполагам трябва да има доста по удачен начин ???
предполагам същото може да стане и с find но там не му знам параметрите :)
както и да е
идеи ?????


Титла: quota
Публикувано от: VladSun в Feb 10, 2005, 17:57
find path-to-start -user owner-to-find

ами параметрите ги има за прочит в

man find :))))

ПС. Това си беше направо за секция Начинаещи  ;)  ;)
ППС. Ако разгледаш и -exec параметъра може и доста лесно да преместиш файловете :) макар, че същото можеш да го направиш и като минеш по изхода на find-а


Титла: quota
Публикувано от: RedIce в Feb 10, 2005, 18:59
за командата find  се сетих докати писах поста, но все пак ме интересува няма ли по хуманен начин така да го кажем
нещо специализирано някава статистика на quotata ?:)

бтв а за find, даже ме беше страх да го погледна, най вече че, параметрите с които са ми давали примври са с 15 опци накрая
нещо от рода на

Примерен код
find $1 -name \* -printf %Ad\-%Ab\-%AY\ %AT\\t%p\\r\\v

или пък това
Примерен код
find . -name \* -print | sed 's/\ /\\ /g'| sed 's/\#/\\#/g' > /tmp/find.tmp; for i in `cat /tmp/find.tmp `; do ls -dl $i| awk '{ print $6" "$7" "$8" "$9 }'; done

след тези примери съм я оставил за спешна ситуация :)


Титла: quota
Публикувано от: VladSun в Feb 10, 2005, 22:26
#!/bin/bash
find / -owner $1 > /tmp/temp.tmp
for i in `cat /tmp/temp.tmp`; do
   mv "$i" /home/$1/
done

Няма нищо страшно :)


Титла: quota
Публикувано от: RedIce в Feb 11, 2005, 12:08
да ама поринцип не съм програмист :) и като видя такива редове и направо испадам в оргазам
разбирам всичко какво прави, но аз надали ще успея сам да го измисля :)

както и да е 10х
:)


Титла: quota
Публикувано от: rpetrov в Feb 11, 2005, 23:41
Внимавай със скрипта от VladSun !

Само намери файловете с "find / -user еди_кой_си ". После решавай какво да ги правиш.


Титла: quota
Публикувано от: RedIce в Feb 11, 2005, 23:59
дам :)
видях го
ние продължихме темата на привате и стигнахме до каде каде по приятен и оптимален варянт
Примерен код
#!/bin/bash
find ./ -owner $1 > /tmp/temp.tmp
for i in `cat /tmp/temp.tmp`; do
chown $2 "$i"
done


като скрипта иде в /bin


Титла: quota
Публикувано от: VladSun в Feb 12, 2005, 00:24
Цитат (rpetrov @ Фев. 11 2005,23:41)
Внимавай със скрипта от VladSun !

Само намери файловете с "find / -user еди_кой_си ". После решавай какво да ги правиш.

Хм, верно е ...
Нищо, че е скрипт ще трябва да се компилира ;)
от 1-вия и 2-рия ми пост ... :)

За предпоследно ;) :

#!/bin/bash
find / -user $1 > /tmp/temp.tmp
for i in `cat /tmp/temp.tmp`; do
    chown $2 "$i"
done


Титла: quota
Публикувано от: rpetrov в Feb 12, 2005, 00:28
Тествал ли си го с много файлове?
Какво става, ако има празно (space) в името на файла ?

Аз нямам owner за командата find, но имам user. Явно сме с различни реализации.


Аз бих го модифицирал така:
Цитат
#!/bin/sh

find ./ -user $1 -exec chown $2 {} \;
Естествено при теб трябва да е -owner, вместо -user.
Може, преди -exec, да се добави -print.


Титла: quota
Публикувано от: rpetrov в Feb 12, 2005, 00:31
П.П. естествено това вече го е предложил VladSun


Титла: quota
Публикувано от: VladSun в Feb 12, 2005, 00:32
Цитат (rpetrov @ Фев. 12 2005,00:28)
Тествал ли си го с много файлове?
Какво става, ако има празно (space) в името на файла ?

Аз нямам owner за командата find, но имам user. Явно сме с различни реализации.


Аз бих го модифицирал така:
Цитат
#!/bin/sh

find ./ -user $1 -exec chown $2 {} \;
Естествено при теб трябва да е -owner, вместо -user.
Може, преди -exec, да се добави -print.

Не сам го тествал, но процеса е итеративен, така че няма да има проблеми.

Ако има space кавичките ще изиграят своята роля...

За find се разбрахме :)

Да, може и с exec, както споменах :) И със сигурност ще е по-елегантно, по-бързо и всичко по- ;)