TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #897 1.33K
✅ Безопасная работа с удалением и chmod

find - одна из самых полезных и часто используемых утилит в linux. Но именно с ней часто происходят самые неприятные аварии. Хотели удалить старые логи - удалили не тот каталог. Хотели поправить права - сломали половину /var/www. Хотели найти временные файлы - случайно зацепили mount point. И проблема не в find, а в том, что он очень послушный. Что написали - то и сделал.

Поэтому главное правило: сначала показать, потом делать.

🤩 Плохой подход:


find /var/log -name "*.gz" -delete


🤩 Лучше сначала так:


find /var/log -name "*.gz" -print


Посмотрели список, убедились, что там нет ничего лишнего и только потом добавили действие:


find /var/log -name "*.gz" -delete


Для удаления по возрасту тоже сначала проверяем:


find /backup -type f -mtime +30 -print


И только после проверки:


find /backup -type f -mtime +30 -delete


▪️ Очень важный флаг - -type. Если удаляем файлы, явно пишем:


find /backup -type f -name "*.tar.gz" -mtime +14 -delete


Если меняем права каталогов:


find /var/www -type d -exec chmod 755 {} \;


Если меняем права файлов:


find /var/www -type f -exec chmod 644 {} \;


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

▪️ Для chmod часто удобнее использовать + вместо \;:


find /var/www -type f -exec chmod 644 {} +


Так команда запускается не для каждого файла отдельно, а пачками. На больших каталогах это заметно быстрее.

Если в путях могут быть пробелы, переводы строк или странные символы, используйте безопасную связку:


find /data -type f -name "*.log" -print0 | xargs -0 rm -f


Но если можно обойтись встроенным -delete, часто лучше использовать его:


find /data -type f -name "*.log" -mtime +7 -delete


▪️ Еще один полезный предохранитель - ограничение глубины:


find /var/log -maxdepth 1 -type f -name "*.gz" -print


Так find не уйдет рекурсивно во все вложенные каталоги. И наоборот, если нужно пропустить верхний уровень:


find /data -mindepth 1 -type d -empty -delete


Это помогает не удалить сам корневой каталог поиска, если он вдруг окажется пустым.

#bash #find

🧑‍💻 NetworkAdmin
  • 👍 4
  • ❤ 2
More from @networkadminru
  1. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  2. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  3. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
  4. Sep 23, 2026💻 Как жестко перезагрузить linux, когда обычный reboot уже не помогает Иногда сервер зави…
  5. Sep 22, 2026🌚 watch: простая динамическая диагностика в терминале Иногда не нужен отдельный мониторин…
  6. Sep 21, 2026👌 Firewall default deny: как внедрять без внезапного отрезания доступа Идея простая: разр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →