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

bash как удалить файлы и директории, старше x-дней?

Есть некая директория Test. В ней находятся файлы и папки. Как удалить только то, что старше 10 дней к примеру.

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.

find /volume1/Test -mtime +10 -exec rm <> \; ?

TС: добавь ключик type -f к файнду и в результате будут только файлі.

TС: добавь ключик type -f к файнду и в результате будут только файлі.

Там не только файлы под удаление, но и папки, в том то и проблема.

При Test, без свежих файлов, удаляет и саму Test

Разница в скорости будет незаметна, но зато есть везде, ибо posix. Но для не \;, а +

про ключ -mindepth тебе уже писали

про ключ -mindepth тебе уже писали

Всегда удивляет в тутошних комментаторов желание решить как можно узкую задачу с возможностью появления завтра у ТСа еще вопроса, например, что делать, если в каталоге появится другие подкаталоги и rm на них ругается. Одно дело, когда универсальное требует кучу нового кода, другое дело, что правильный ответ скорее всего не -mindepth, а таки тоже уже данный «-type f»

При Test, без свежих файлов, удаляет и саму Test

Вариант с * не затронет сам каталог

Утилита tmpwatch. Одна короткая строчка. И никаких предлагаемых тут нагромождений.

приводит к удалению и самой директории Test, если в ней нет свежих файлов, естественно.

делай touch /path/to/search/dir/.placeholder перед запуском find и всё. Никаких find dir/*, это пропустит все файлы и директории начинающиеся с точки «.»

с возможностью появления завтра у ТСа еще вопроса, например, что делать, если

В данном условии было сказано удалить только то, что старше 10 дней, без уточнения файлы или директории, но с сохранением директории верхнего уровня. К данному условию идеально подходит -mindepth .

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

Задачи нужно решать по условию и по мере поступления, а не прикидываться Вангой.

Вот только у вас не Ванга, а натуральный наполеонизм какой-то. Я комментировал не вас, а teod0r-а, который комментировал скрипт bash как удалить файлы и директории, старше x-дней? (комментарий)

Читайте также:  Cumulative update windows 10 error

Скорее всего я просто не совсем верно интерпретировал ваш пост.

Источник

Как найти и удалить файлы старше X дней в Linux

Очень важно находить и очищать старые файлы, которые больше не нужны через определенный промежуток времени.

Вот быстрый способ сделать это.

В этом кратком руководстве вы узнаете, как находить и удалять файлы старше X дней в Linux и Unix-подобных операционных системах.

Найти и удалить файлы старше X дней в Linux

Отказ от ответственности: вы должны быть очень осторожны при выполнении этих команд.

Эти команды не запрашивают подтверждения перед удалением файлов.

Он просто удалит файлы после нажатия клавиши ENTER. Так что будьте очень осторожны!

Сначала давайте узнаем файлы старше X дней, например 30 дней.

Чтобы сделать так, просто:

Вышеупомянутая команда найдет и отобразит старые файлы старше 30 дней. Вот,

dot (.) – Представляет текущий каталог.
-mtime – представляет время изменения файла и используется для поиска файлов старше 30 дней.
-print – отображает старые файлы

Если вы хотите искать файлы в определенном каталоге, просто замените точку на путь папки.

Например, чтобы узнать файлы, которые старше 30 дней в каталоге / home / sk / Downloads, просто запустите:

Теперь, чтобы удалить файлы, запустите любую из следующих команд.

Снова предупреждаю вас, что эти команды будут удалять файлы сразу после нажатия кнопки ENTER.

Перед выполнением этих команд будьте осторожны и дважды проверьте их.

Периодически удаляйте старые файлы, если они не нужны через регулярные промежутки времени, или резервируют их на любые внешние диски и освобождают место на диске.

Вы можете использовать свободное пространство для любых других полезных целей.

Источник

Команды для удаления большого количества файлов в Linux

Удаление старых файлов linux по маске чаще всего осуществляется следующим образом:

Веб-сервер указан для примера. Синтаксис очень прост — команда принудительно удалит все файлы с расширением .log в указанном каталоге, при этом удаление будет рекурсивным(-r — recursive) и подтверждения система при этом спрашивать не будет (-f — force).

При удалении таким образом очень большого количества файлов из определенного каталога может выдавать ошибки — причина в том, что система на самом деле не видит маски и разворачивает передаваемое ей выражение — срабатывает ограничение на количество аргументов, и выполнение команды прекращается.

Читайте также:  Driver toshiba satellite drivers l300 windows

Если rm -rf не помогает — удалять файлы следует в цикле for. Для каждого файла будет отдельная операция удаления и никаких ограничений системы здесь ожидать не приходится.

Синтаксис в простейшем случае может выглядеть так:

for f in /var/log/apache2/*.log; do rm «$f»; done

В цикл for можно добавить любую дополнительную логику.

Удаление старых файлов в Linux по Cron

Логи или другие файлы (сессии РНР) можно удалять как используя циклы (так приходится делать обычно если логов или других файлов накопилось действительно очень много), но если система не запущена или только создается лучше использовать регулярно выполняемое задание Cron, согласно которому с заданной периодичностью будут удаляться файлы определенных типов

# m h dom mon dow command

23 3 * * * find /var/www/web/sites/server-gu.ru/www/var/session/ -type f -mtime 7 -exec rm -f <> \;

В примере удаляются сессии РНР для сайта старше 7 дней.

В цикле то же самое можно сделать так:

for f in /tmp/logs/*.log

find $f -mtime +7 -exec rm <> \;

Приведенное выражение, как и любой другой цикл можно поместить в файл, сделать его исполняемым и с тем же успехом выполнять по Cron

Источник

linux-notes.org

Как найти и удалить файлы старше конкретной даты в Linux

Хочу в этой теме «Как найти и удалить файлы старше конкретной даты в Linux» рассказать как можно найти и удалить определенные файлы по дате в ОС Linux таких как Debian, Ubuntu или Redhat, Centos. На готовых примера покажу что и как нужно делать.

1. Посмотрим список всех файлов в папке с датой изменения, для этого стоит выполнить команду:

пример использование команды ls -lah для вывода подробной информации о файлах

2. Чтобы узнать сегодняшнюю дату, нужно выполнить:

3. Команда что выше не вывела полную дату, можно это исправить:

4. Допустим нужно найти файлы и удалить их по определенной дате.

Если нужно найти все файлы свыше 3 дня и после чего удалить их:

Если нужно найти все файлы свыше 90 дней и после чего удалить их:

Если нужно найти все файлы свыше 365 дней и после чего удалить их:

Если нужно найти все файлы свыше 100 дней и после чего удалить их:

Удаление файлов старше N дней

можно еще вот так:

Ключи:
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.
-type — тип искомого: f=файл, d=каталог, l=ссылка (link).
-user — владелец: имя пользователя или UID.
-group — владелец: группа пользователя или GID.
-perm — указываются права доступа.
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
-atime — время последнего обращения к файлу.
-ctime — время последнего изменения владельца или прав доступа к файлу.
-mtime — время последнего изменения файла.
-newer другой_файл — искать файлы созданные позже, чем другой_файл.
-delete — удалять найденные файлы.
-ls — генерирует вывод как команда ls -dgils.
-print — показывает на экране найденные файлы.
-exec command <> \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
-ok — перед выполнением команды указанной в -exec, выдаёт запрос.
-depth — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
-prune — используется, когда вы хотите исключить из поиска определённые каталоги.
N — количество дней.

Читайте также:  Hp 1010 drivers windows 10 x64

Источник

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

Имею в хозяйстве систему видеонаблюдения: сервер (обычный ПК), несколько ip видеокамер Acti, Axis, PoE инжекторы к камерам, гигабитный хаб.

Сервер представляет из себя обычный ПК с двумя сетевыми картами, 2 жестких диска (320GB системный, 2000GB под архив с фотографиями ), операционная система Linux Centos 6 x64, помимо базовой системы установлены пакеты: motion, samba, ntp, nload, htop, mc .

Сервер через отдельный гигабитный хаб соединен с камерами, motion пишет фотографии при движении, нужные юзеры просматривают архив по samba, в cron запихнут скрипт удаления старых фотографий при переполнении диска.

Данное решение было выбрано потому что нужна была максимальная глубина архива. В зависимости от места установки камеры получается 1.5 — 3ГБ ( до 10000 фотографий) в день на одну камеру. Разрешение фотографии 1280*800 , размер около 125КБ. Также хочу заметить что motion вообще не грузит процессор, к серверу подключено в данный момент 5 камер, загрузка сети 25 Мбит/с, загрузка процессора 5% (Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz), load average 0.06 0.13 0.19 .

Полный путь до файла сейчас выглядит так /mnt/2000gb/photo/camera05/2014/12/03/2014_12_03_00_14_51-01.jpg .

Удалять старые файлы нужно было только при заполнении диска, например до 90%. Для этого я написал следующий скрипт. Скрипт был запихнут в cron выполнятся раз в час.

И он работал если файлов было не более 50GB. Сейчас он выполняется настолько долго что ничего не происходит. Виснет на выполнении команды

Источник

Оцените статью