Значение дисковых квот не соответствует фактическому
Симптомы
Значение в поле Диск в настройках пользователей отличается от фактически установленных дисковых квот.
Причины
- Была изменена точка монтирования раздела
- Квоты были определены некорректно при установке
Решение
Воспользуйтесь одним из приведенных ниже скриптов синхронизации: он приводит значения фактических дисковых квот в соответствие со значениями, установленными в панели.
Вариант скрипта необходимо выбрать в зависимости от используемой панелью СУБД. Проверить тип СУБД можно с помощью следующей команды:
mysql ispmgr
Успешное подключение к базе данных означает, что используется MySQL; вывод ошибки «Unknown database 'ispmgr'» указывает, что используется SQLite3.
Скопируйте соответствующий скрипт и сохраните его в отдельный файл на сервере. После этого сделайте его исполняемым, выполнив команду:
chmod +x ПУТЬ_ДО_ФАЙЛА/ИМЯ_СКРИПТА
Скрипт не сработает, если он будет запущен без прав администратора и если пароль администратора СУБД в файле по пути /root/.my.cnf
отличается от фактического.
Запустить скрипт можно с помощью команды:
sh ПУТЬ_ДО_ФАЙЛА/ИМЯ_СКРИПТА
Скрипт для MySQL
#!/bin/bash
mysql ispmgr -e "select users.name, userprops.value from users inner join userprops on id=userprops.users where userprops.name='limit_quota' AND value>0;" > test.txt
i=`wc -l test.txt | awk '{print $1}'` ;
for (( count=2; count<=$i; count++ ))
do
echo "$count";
pd="$count""p";
echo "$pd";
let "in=`cat test.txt | awk '{print $2}' | sed -n "$pd"`*1024/8";
setquota -g `cat test.txt | awk '{print $1}' | sed -n "$pd"` `cat test.txt | awk '{print $2}' | sed -n "$pd"`M `cat test.txt | awk '{print $2}' | sed -n "$pd"`M $in $in /;
done
rm -rf test.txt
Скрипт для SQLite3
#!/bin/bash
sqlite3 /usr/local/mgr5/etc/ispmgr.db "select users.name, userprops.value from users inner join userprops on id=userprops.users where userprops.name='limit_quota' AND value>0;" > test.txt
i=`wc -l test.txt | awk '{print $1}'` ;
for (( count=1; count<=$i; count++ ))
do
echo "$count";
pd="$count""p";
echo "$pd";
let "in=`cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`*1024/8";
setquota -g `cat test.txt | awk -F "|" '{print $1}' | sed -n "$pd"` `cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`M `cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`M $in $in /;
done
#rm -rf test.txt