TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #553 700
Отслеживание появления новых файлов и их автоархивация

Иногда нужно автоматически реагировать на новые файлы: сервис складывает логи, система генерирует отчеты или приложение пишет дампы Вместо cron-сканирования каталога можно использовать inotify - это механизм ядра linux для отслеживания изменений файловой системы.

▪️ Слушаем каталог. Инструмент - inotifywait (пакет inotify-tools). Простейший пример:


inotifywait -m /data/incoming -e create


-m - режим постоянного мониторинга
-e create - событие создания файла

🛠 Скрипт автоархивации


#!/usr/bin/env bash

WATCH_DIR="/data/incoming"
ARCHIVE_DIR="/data/archive"

mkdir -p "$ARCHIVE_DIR"

inotifywait -m -e create --format '%f' "$WATCH_DIR" | while read -r file; do
echo "Новый файл: $file"

tar -czf "$ARCHIVE_DIR/${file}.tar.gz" -C "$WATCH_DIR" "$file"

echo "Архив создан: ${file}.tar.gz"
done


1. inotifywait ловит появление файла
2. имя файла передаётся в цикл
3. создается архив tar.gz

▪️ Практический кейс Приложение пишет дампы:


dump_001.sql
dump_002.sql
dump_003.sql


Скрипт автоматически делает:


dump_001.sql.tar.gz
dump_002.sql.tar.gz
dump_003.sql.tar.gz


Без cron и без опроса каталога.

⚠️ Важный нюанс. Иногда файл появляется до завершения записи. Лучше ловить событие close_write:


inotifywait -m -e close_write --format '%f' "$WATCH_DIR"


Это означает: файл закрыт после записи.

▪️ Бонус: автоудаление исходника


tar -czf "$ARCHIVE_DIR/${file}.tar.gz" -C "$WATCH_DIR" "$file" && rm "$WATCH_DIR/$file"


Каталог остается чистым.

BashTex 📱 #bash #scripts
  • 👍 11
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
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 →