2

Я ищу bash-скрипт, который бы автоматически удалял самые старые папки (скажем, последние 3) в каталоге, когда доступное пространство падает ниже X гигов.

Я читал похожие посты, но так как я ничего не знаю, я не знаю, как безопасно изменить сценарии самостоятельно.

1 ответ1

2

Вам нужно настроить PARTITION, DIR_TO_CHECK, LIMIT и NUM_DIRS_TO_DELETE, BLOCKSIZE и NUM_DIRS_TO_DELETE в соответствии с вашими потребностями.

LIMIT - это количество доступных гигабайт.

Будьте осторожны с этим, когда вы раскомментируете команду rm, удаляемые каталоги исчезают!

#!/bin/bash
IFS=$'\n'

PARTITION="/dev/sdb1"
DIR_TO_CHECK="/home/bryan/temp/*/"
BLOCKSIZE=1000000000 
LIMIT=12
NUM_DIRS_TO_DELETE=4


if [ $(df  -B $BLOCKSIZE  $PARTITION | tail -1 |  awk  '{ print $4}') -gt $LIMIT ]; then
  echo "plenty of space"
else 
   for i in $(ls -d $DIR_TO_CHECK --group-directories-first  -tr | head -$NUM_DIRS_TO_DELETE)
   do

      du -h $i
      # When you are happy that the script does what you want, 
      # delete the above line and remove the # character from the below
      # rm -r $i 
   done
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .