Aplica quotas a partir de um arquivo gerado pelo repquota.
Publicado por Alessandro Dias 09/04/2007
[ Hits: 5.688 ]
Aplica quotas a partir de arquivos [.gz] gerados pelo repquota.
Para gerar os arquivos verifique o script backup quotas ou execute:
#repquota -aug | gzip > quota.all.gz
#repquota -au | gzip > quota.usuarios.gz
#repquota -ag | gzip > quota.grupos.[GRUPO].gz
#!/bin/bash
# @ Alessandro Dias [25/01/2007]
function aplica_quota_usuario()
{
local QUOTAS
local NLINHAS
local LINHA
local i
local USUARIO
local QUOTA
IFS=$'\t '
QUOTAS=`cat $1/quota.usuarios.gz | gunzip | sed -e "1,5d" | sed -e "/^$/d"`
NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
for ((i=1; i<=$NLINHAS; i++))
do
LINHA=`echo $QUOTAS | sed -ne ${i}p`
USUARIO=`echo $LINHA | cut -d " " -f 1`
QUOTA=`echo $LINHA | cut -d " " -f 4`
if [ "$USUARIO" != "root" ]; then
echo "$USUARIO - $QUOTA"
setquota -u $USUARIO $QUOTA $QUOTA 0 0 /home
fi
done
}
function aplica_quota_grupo()
{
local QUOTAS
local NLINHAS
local LINHA
local i
local GRUPO
local QUOTA
IFS=$'\t '
GROUPS0X=`echo $1 | cut -d "-" -f 2`
ARQ="$2/quota.grupos.$GROUPS0X.gz"
QUOTAS=`cat $ARQ | gunzip | sed -e "1,5d" | sed -e "/^$/d"`
NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
for ((i=1; i<=$NLINHAS; i++))
do
LINHA=`echo $QUOTAS | sed -ne ${i}p`
GRUPO=`echo $LINHA | cut -d " " -f 1`
QUOTA=`echo $LINHA | cut -d " " -f 4`
if [ "$GRUPO" != "root" ]; then
echo "$GRUPO - $QUOTA"
setquota -g $GRUPO $QUOTA $QUOTA 0 0 /mnt/$GROUPS0X
fi
done
}
function aplica_quota()
{
if [ "$1" == "user" ]; then
echo -e "\ntipo=$1 - part=$2\n"
aplica_quota_usuario $3
else
if [ "$1" == "group" ]; then
echo -e "\ntipo=$1 - part=$2\n"
aplica_quota_grupo $2 $3
fi
fi
}
if [ $# -ne 0 ]; then
IFS=$'\t '
PASTA=$1
# quotas aplicadas para as partições abaixo
QUOTAS=`cat $1/quota.all.gz | gunzip | grep "\*\*\*" | cut -d " " -f 4,8`
NLINHAS=`echo $QUOTAS | wc -l |cut -d " " -f 1`
for ((i=1; i<=$NLINHAS; i++))
do
LINHA=`echo $QUOTAS | sed -ne ${i}p`
TIPO=`echo $LINHA | cut -d " " -f 1`
PART=`echo $LINHA | cut -d " " -f 2`
aplica_quota $TIPO $PART $PASTA
done
else
echo -en "\E[1;37;41m{FONTE}33[4mSintaxe correta: aplica_quota.sh <pasta quotas>{FONTE}33[0m\E[0m"
echo -en "\n<pasta quotas> contem os arquivos .gz com as quotas.\n"
fi
arrcomb: Gerando Arranjos e Combinações
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - RESTAURANDO MBOX VIA SSH
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA
Interface de Controle para o SCDBACKUP.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Instalar Dual Boot, Linux+Windows. (8)
Eaí? Já programou no windows? (2)
Erro ao enviar arquivos para o Storage Synology NAS (0)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









