X
    Categories: Практикум

Как систематизировать удаление старых файлов в Убунту


В статье “Scrot или вариант для контроля за пользователем” я описывал вариант слежения за пользователем при помощи полезной команды для создания скриншотов – scrot. Но если не чистить папку со созданными скриншотами, то совсем скоро место на жестком диске начнет катастрофически уменьшаться. Но выход есть!

На помощь нам придут утилиты: find и cron. Чтобы удалить файлы, которые созданы, например 30 дней назад, нужно выполнить команду:



find /home/user/snapshot -mtime +30 -type f -exec rm -rf {} \;

Разберем некоторые элементы этой команды:

/home/user/snapshot – каталог, в котором нужно производить поиск;
-mtime +30 – удаляем файлы созданные больше 30 дней назад;
-type f – ключ, который указывает, что искать и удалять будем файлы, а не каталоги;
-exec rm -rf – гибкое удаление файлов или папок.

Если нужно удалить файлы, которые созданы несколько часов назад, то выполним команду в Терминале:

find /home/user/snapshot -mmin +360 -type f -exec rm -rf {} \;

-mmin +360 – удаляем файлы созданные более 360 минут назад.

Создадим скрипт. Для этого в текстовом редакторе напишем следующий текст:

#!/bin/bash
while true;
do
find /home/user/snapshot -mtime +30 -type f -exec rm -rf {} \;
done

Сохраним его, допустим с именем dellete_files.sh, в Домашнем каталоге. Сделаем его исполняемым:

chmod +x путь к скрипту dellete_files.sh

Теперь добавим задание в cron. Как это делать можно узнать из статьи “Cron — планируем задания в Убунту”.

Команда может иметь следующий вид:

0 12 * * 1 путь к скрипту dellete_files.sh

А если подробнее, то файлы будут удаляться в 12 часов дня по пятницам. Если нужно выполнять очистку при каждой загрузке системы, то команда будет следующей:

@reboot root путь к скрипту dellete_files.sh

Но можно просто добавить скрипт в автозагрузку.


admin-dm2003: