Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2018-10-24 11:08:58 +0400

baf28 Gravatar baf28

Скрипт удаления старых файлов при переполнении диска

Всем привет.

Я сообразил скриптик, который будет удалять 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

Скрипт удаления старых файлов при переполнении диска

Всем привет.

Я сообразил скриптик, который будет удалять 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.