2

У меня есть небольшой сервер от DigitalOcean (5 долларов США в месяц), и на моем сервере у меня всего 16 ГБ из 20 ГБ. Я буду размещать сайт, который будет автоматически загружать небольшие файлы (3-6 Мб), и в конечном итоге папка для загрузки станет больше. Существует ли какое-либо задание или сценарий cron, который будет автоматически запускаться каждый день и проверять определенную папку, и если эта папка превышает X ГБ, она будет пытаться очистить папку? (некоторые файлы могут быть использованы)

Я использую Ubuntu 15, если это имеет значение. Спасибо за любые советы.

1 ответ1

2

Я написал скрипт, который будет делать это ниже - пожалуйста, проверьте, довольны ли вы им, особенно командой rm -r, так как я не выполнил ее. (Эта команда должна удалить все в данной папке, включая подпапки.

#! /bin/bash

FOLDER=/folder/to/delete

MAXSIZEINGIGS=10

#### No User Serviceable Parts below this line ###

MAXSIZE=$(( $MAXSIZEINGIGS * 1024 * 1024 ))
FOLDERSIZE=`du -ks $FOLDER | cut -f1`

if [ $FOLDERSIZE -gt $MAXSIZE ]
then
        rm -r $FOLDER/*
fi

Создайте файл с помощью приведенного выше сценария, затем сделайте его исполняемым (имя файла chmod 755) и добавьте его в crontab с помощью строки вроде

02 02 * * *    ownername   /path/to/file

(Это будет выполняться каждое утро в 02:02 и предполагает, что вы добавили его в /etc /crontab. Если вы добавили его в crontab пользователей, пропустите бит "имя владельца".

Тем не менее, мне интересно, если это хороший способ делать вещи. Совершенно другой подход может состоять в том, чтобы просто регулярно удалять все файлы старше указанного возраста - вы можете сделать это с помощью 1 строки из crontab, как

02 04 * * *     username     find /data/spam -ctime +15 -exec rm {} +

Который будет искать все файлы старше 14 дней в /data /spam и удалять их.

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