1 | изначальная версия редактировать | |
Всем привет.
Я сообразил скриптик, который будет удалять N старых файлов при переполнении диска. Так как софт, который я использую бесплатный, то ... вот скрипт.
И хотел бы, что бы тем кому он нужен он пригодился, а те кто сможет его доработать, те написали как это сделать.
#!/bin/sh
#Скрипт удаления старых файлов при переполнении диска
# $1 - доспустимый размер занятого места в процентах, например 90, без знака процентов %
# $2 - точка монтирования, например /var
# $3 - имя каталога для очистки старых файлов, например /var/spool/asterisk/monitor/
# $4 - количество удаляемых файлов
# запускать так sh remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000
# Скрипт создал BAF mail: ya.baf28@yandex.kz tel: 87054516620
# @daily /var/lib/asterisk/bin/remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000 >> /var/log/asterisk/remove-old.log 2>&1
if [ "$#" -eq 4 ]
then
#Определяем переменные из аргуметов переданных скрипту
NOT_MORE_PERCENT=$1
MOUNT_POINT=$2
TARGET_DIRECTORY=$3
N_FILES=$4
#Выводим дату начала отчистки диска
DATE=`date "+%F %T"`
echo "$DATE приступаю к отчистки диска"
#Определяем процент занятого места на диске по точке монтирования этого диска
REAL_PERCENT=$(df -h | grep $MOUNT_POINT | awk '{print $5}' | sed 's/.$//')
#В случае если реальный процент больше или равен заданному значению удаляем лишние файлы
if [ "$REAL_PERCENT" -ge "$NOT_MORE_PERCENT" ]
then
#Находим файлы и удаляем последнии N штук
find $TARGET_DIRECTORY -type f | sort -r | tail -n $4 | xargs -i rm -rf '{}'
#Находим все пустые директории в заданной директории и удаляем
find $TARGET_DIRECTORY -type d -empty | xargs -i rm -rf '{}'
else
#В случае если реальный процент меньше заданного значения ничего не делаем
DATE=`date "+%F %T"`
echo "$DATE отчистка диска не требуется"
exit 0
fi
#Вывожу дату и время окончания отчистки диска
DATE=`date "+%F %T"`
echo "$DATE отчистка диска закончена"
else
echo "Количество аргументов должно быть равно 4-м"
echo "Введенное количество аргуметов $#"
echo "###################################################"
echo "Пример использования: remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000"
echo "Первый параметр доспустимый размер занятого места в процентах, например 90, без знака процентов %"
echo "Второй параметр точка монтирования, например /var"
echo "Третий параметр имя каталога для очистки старых файлов, например /var/spool/asterisk/monitor/"
echo "Четвертый параметр количество удаляемых файлов"
exit 1
fi
exit 0
2 | No.2 Revision редактировать |
Всем привет.
Я сообразил скриптик, который будет удалять N старых файлов при переполнении диска. Так как софт, который я использую бесплатный, то ... вот скрипт.
И хотел бы, что бы тем кому он нужен он пригодился, а те кто сможет его доработать, те написали как это сделать.
#!/bin/sh
#Скрипт удаления старых файлов при переполнении диска
# $1 - доспустимый размер занятого места в процентах, например 90, без знака процентов %
# $2 - точка монтирования, например /var
# $3 - имя каталога для очистки старых файлов, например /var/spool/asterisk/monitor/
# $4 - количество удаляемых файлов
# запускать так sh remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000
# Скрипт создал BAF mail: ya.baf28@yandex.kz tel: 87054516620
# @daily /var/lib/asterisk/bin/remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000 >> /var/log/asterisk/remove-old.log 2>&1
if [ "$#" -eq 4 ]
then
#Определяем переменные из аргуметов переданных скрипту
NOT_MORE_PERCENT=$1
MOUNT_POINT=$2
TARGET_DIRECTORY=$3
N_FILES=$4
#Выводим дату начала отчистки очистки диска
DATE=`date "+%F %T"`
echo "$DATE приступаю к отчистки очистки диска"
#Определяем процент занятого места на диске по точке монтирования этого диска
REAL_PERCENT=$(df -h | grep $MOUNT_POINT | awk '{print $5}' | sed 's/.$//')
#В случае если реальный процент больше или равен заданному значению удаляем лишние файлы
if [ "$REAL_PERCENT" -ge "$NOT_MORE_PERCENT" ]
then
#Находим файлы и удаляем последнии последние N штук
find $TARGET_DIRECTORY -type f | sort -r | tail -n $4 | xargs -i rm -rf '{}'
#Находим все пустые директории в заданной директории и удаляем
find $TARGET_DIRECTORY -type d -empty | xargs -i rm -rf '{}'
else
#В случае если реальный процент меньше заданного значения ничего не делаем
DATE=`date "+%F %T"`
echo "$DATE отчистка очистка диска не требуется"
exit 0
fi
#Вывожу дату и время окончания отчистки очистки диска
DATE=`date "+%F %T"`
echo "$DATE отчистка очистка диска закончена"
else
echo "Количество аргументов должно быть равно 4-м"
echo "Введенное количество аргуметов $#"
echo "###################################################"
echo "Пример использования: remove-old.sh 85 /var /var/spool/asterisk/monitor/ 1000"
echo "Первый параметр доспустимый размер занятого места в процентах, например 90, без знака процентов %"
echo "Второй параметр точка монтирования, например /var"
echo "Третий параметр имя каталога для очистки старых файлов, например /var/spool/asterisk/monitor/"
echo "Четвертый параметр количество удаляемых файлов"
exit 1
fi
exit 0
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.