Команда find — один із найкорисніших інструментів Linux для адміністрування VPS: вона допомагає знаходити файли за назвою, розміром, часом створення, власником, правами доступу та навіть вмістом, а потім виконувати безпечні дії (переміщення, chmod, архівування, видалення) над отриманими результатами.
Якщо ви адмініструєте веб-сайт, поштовий сервер або будь-яку програму на VPS під Linux, володіння find заощадить вам години під час інцидентів: «Куди поділося місце на диску?», «Які файли змінилися минулої ночі?», «Які папки мають небезпечні права доступу?»
Багато завдань «пошуку» вирішуються швидше за допомогою правильної команди:
| Інструмент | Найкраще підходить для | Ключова деталь |
|---|---|---|
| find | Точний пошук файлів дії (видалення/переміщення/chmod) | Переглядає каталоги в режимі реального часу |
| знайти | Миттєвий пошук за іменем файлу | Використовує індекс (може бути застарілим) |
| grep | Пошук у файлах за змістом | Часто використовується разом із find (-exec grep) |
find
Місце пошуку — це шлях до каталогу. Використовуйте . для поточного каталогу. Тести визначають, що відповідає (ім’я, тип, час, власник, права доступу). Дії визначають, що робити з відповідностями (вивести, виконати, видалити).
Важлива особливість: find оцінюється зліва направо. Коли ви поєднуєте умови за допомогою AND/OR, використовуйте дужки (з екрануванням у оболонці), щоб уникнути несподіванок.
# Example: (A OR B) AND type file
find . ( -name "*.log" -o -name "*.txt" ) -type f
# Exact name
find /var/www -name "wp-config.php"
# Pattern (all .tmp files)
find / -name "*.tmp"
# Case-insensitive
find /home -iname "*.JPG"
Порада: завжди беріть шаблони в лапки, як-от "*.tmp" щоб оболонка не розгортала їх занадто рано.
# Files only
find . -type f
# Directories only
find . -type d
# Symlinks
find /etc -type l
# Files larger than 1 GB
find / -type f -size 1G
# Files smaller than 10 KB
find /var/www -type f -size -10k
На виробничих серверах уникайте сканування всієї файлової системи, якщо це не потрібно. Почніть з ймовірних «гарячих точок»: /var/log, /var/lib, /home, /tmpта каталог вашого проєкту.
Прапорці часу надзвичайно корисні для реагування на інциденти та очищення:
# Files modified more than 60 days ago
find /var/log -type f -mtime 60
# Files modified in the last 30 minutes
find /var/www -type f -mmin -30
# Files modified between 10 and 20 minutes ago
find /var/www -type f -mmin 10 -mmin -20
Порада: -mtime вказується в днях. -mmin виражається в хвилинах. Для підозрілої активності на VPS -mmin часто є більш практичним.
# Files owned by a user
find /var/www -type f -user www-data
# Files owned by a group
find /var/www -type f -group www-data
Ці перевірки є типовими під час перевірок безпеки Linux:
# World-writable files (potential risk)
find /var/www -type f -perm -0002
# Directories with 777 (almost always a mistake)
find /var/www -type d -perm 0777
# Files readable/writable by everyone
find / -type f -perm 0666
Якщо ви використовуєте бізнес-сервіси (WordPress, поштовий сервер, панелі управління) на VPS, наведення порядку в правах доступу є частиною базового зміцнення безпеки.
Щоб шукати всередині файлів, поєднайте find з grep. Це часто використовується під час пошуку секретних даних, прапорців конфігурації або підозрілих вставлень.
# Search for a string inside all .conf files
find /etc -type f -name "*.conf" -exec grep -Hn "listen" {} ;
# Case-insensitive search inside PHP files (project folder)
find /var/www/project -type f -name "*.php" -exec grep -Hin "base64_decode" {} ;
-maxdepth та -mindepth.-xdev.-prune (ідеально підходить для node_modules, кеш, резервні копії).# Exclude node_modules and vendor directories
find /var/www/project
( -path "*/node_modules/*" -o -path "*/vendor/*" ) -prune -o
-type f -name "*.log" -print
Найпотужніша частина find — це автоматизація. Але з великою силою приходить «ой, я видалив робочу версію». Використовуйте безпечний робочий процес:
-print спочатку та перегляньте результат.-ok) або запишіть результати.-delete для безпечних, добре перевірених шаблонів.# SAFE: show what would be removed first
find /tmp -type f -mtime 14 -print
# Semi-safe: ask before executing
find /tmp -type f -mtime 14 -ok rm -f {} ;
# Fast but risky: delete immediately (use only when confident)
find /tmp -type f -mtime 14 -delete
Порада від професіонала: за можливості віддавайте перевагу -exec ... {} (plus), коли це можливо — це ефективніше, ніж запускати команду один раз для кожного файлу.
Класичне завдання для VPS: не давати тимчасовим папкам рости безкінечно. Заплануйте нічне очищення:
crontab -e
# Remove files older than 14 days from /tmp daily at 00:00
0 0 * * * /usr/bin/find /tmp -type f -mtime 14 -delete
Використовуйте повний шлях до find (перевірте за допомогою which find) і завжди починайте з -print пробного запуску на тестовій папці.
*.log: оболонка розширює це неправильно. Виправлення: використовуйте "*.log".-print .-mtime означає дні, а не години. Виправлення: використовуйте -mmin для коротких проміжків часу.( ... ).На VPS під управлінням Linux find є щоденним інструментом: досліджуйте використання диска, очищайте старі файли, знаходьте конфігурації та виконуйте перевірки безпеки. У поєднанні з інструментами моніторингу (такими як Zabbix) це стає набором інструментів реагування на інциденти, якому можна довіряти.