Архив за месяц: Октябрь 2015

Восстановление удаленных разделов. Testdisk.

Ковыряясь с созданием мультизагрузочной флешки, я таки удалил все данные с моего карманного жесткого диска. И снова судорожные поиски программ по восстановлению, снова нулевой результат…. Там же было 200Гб нужной информации, Карл! Но постойте! Была же программа, которая выручала меня не один раз, со сто процентным результатом. Да, вот она — testdisk.

Грузимся с диска или флешки. Далее по пунктам:

1. Выбираем диск, жмем Proceed
2. Выбираем тип файловой системы. Если раздел Windows, выбираем Intel
3. Нажимаем Analyze для анализа жёсткого диска
4а. Жмём Quick Search
4б. Если при быстром поиске ничего не найдено, выбираем Deep Search
5. И вот он нашел удаленный раздел. Клавишами <> на клавиатуре надо выбрать тип раздела — Primary, Logical итд.
Клавишей P, можно посмотреть файлы в найденных разделах.
Enter
6. В следующем окне жмем write. Потом YES. Выходим из программы Q

После перезагрузки, все файлы на диске отображаются как и прежде.
При случайном или аварийном удалении, восстановить фалы и разделы можно только если на диск ничего не записывалось поверх. Т.е. после удаления, нужно отключить диск от компьютера и начать восстановление.

Настройка cron на openWRT

Настройка

Для выполнения заданий нужно создать файл:

1
# touch /etc/crontabs/root
# touch /etc/crontabs/root

Создаём символическую ссылку на файл crontab:

1
# ln -sf /etc/crontabs/root /etc/crontab
# ln -sf /etc/crontabs/root /etc/crontab

это позволит ссылаться на crontab используя /etc/crontab.

Стартуем сервис и включаем автозагрузку

1
2
# /etc/init.d/cron start
# /etc/init.d/cron enable
# /etc/init.d/cron start
# /etc/init.d/cron enable

Проверяем успешный запуск крона в системном логе:

1
# logread
# logread

В последней строке должно быть что то вроде:

1
Oct 14 09:07:57 gate cron.info crond[7727]: crond: crond (busybox 1.19.4) started, log level 8
Oct 14 09:07:57 gate cron.info crond[7727]: crond: crond (busybox 1.19.4) started, log level 8

Использование

Теперь, когда вы cron настроен и работает, можно запускать любые задачи по расписанию. Просто добавьте запись в /etc/crontabs/root.

Например, если нужно перезапустить wifi интерфейс(radio0) ежедневно в 06:30, добавляем в кронтаб:

1
30 06 * * * wifi restart
30 06 * * * wifi restart

или указываем путь к своему скрипту.

Перезагружаем сервис для сохранения изменений:

1
# /etc/init.d/cron restart
# /etc/init.d/cron restart

Скрипт проверки свободного места с оповещением по e-mail

Скрипт проверяет остаток места по указанному лимиту и отсылает на почту предупреждение

1
2
3
4
5
6
7
8
9
10
#выводим остаток места тома
space=`df -h | grep /dev/vda | awk ' {print $4} ' | sed 's/G//'`
#лимит в Gb
limit=1
#проверяем остаток к лимиту
if (( $(bc <<< "$space <= $limit") == 1 ))
#шлем e-mail если меньше
then
echo "Warning! Disk Space is full. Avalible space $space Gb" | mail -s "Disk notification" you@email.ru
fi
#выводим остаток места тома
space=`df -h | grep /dev/vda | awk ' {print $4} ' | sed 's/G//'`
#лимит в Gb
limit=1
#проверяем остаток к лимиту
if (( $(bc <<< "$space <= $limit") == 1 ))
#шлем e-mail если меньше
then
echo "Warning! Disk Space is full. Avalible space $space Gb" | mail -s "Disk notification" you@email.ru
fi

Запускаем в cron по необходимости. /dev/vda и you@email.ru меняем на свои.

Квоты на CentOS и Vesta

Для включения квот

1
 sudo /usr/local/vesta/bin/v-add-sys-quota
 sudo /usr/local/vesta/bin/v-add-sys-quota

Для автоматического обновления квот скрипт для запуска в cron:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
# info: update user statistics
# options: USER
#
# Function logs user parameters into statistics database.
 
 
#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#
 
# Argument defenition
user=$1
 
# Importing system enviroment  as we run this script
#       mostly by cron wich not read it by itself
source /etc/profile
 
# Includes
source $VESTA/func/main.sh
source $VESTA/func/domain.sh
source $VESTA/conf/vesta.conf
 
 
#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#
 
# Creating user_list
if [ -z "$user" ]; then
    user_list=$(ls $VESTA/data/users)
else
    user_list="$user"
fi
 
# Updating sys quotas
for user in $user_list; do
    QUOTA_UPDATE=$VESTA/bin/v-update-user-quota
    sudo ${QUOTA_UPDATE} $user
done
 
exit
#!/bin/bash
# info: update user statistics
# options: USER
#
# Function logs user parameters into statistics database.


#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#

# Argument defenition
user=$1

# Importing system enviroment  as we run this script
#       mostly by cron wich not read it by itself
source /etc/profile

# Includes
source $VESTA/func/main.sh
source $VESTA/func/domain.sh
source $VESTA/conf/vesta.conf


#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#

# Creating user_list
if [ -z "$user" ]; then
    user_list=$(ls $VESTA/data/users)
else
    user_list="$user"
fi

# Updating sys quotas
for user in $user_list; do
    QUOTA_UPDATE=$VESTA/bin/v-update-user-quota
    sudo ${QUOTA_UPDATE} $user
done

exit