Signal Visionary Xperience
  • Забыли пароль?
  • Забыли логин?
  1. Вы здесь:  
  2. Главная
  3. Uncategorised

Скрипт Bash для автоматической очистки старых файлов

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


#!/bin/bash

# Настройки (измените по необходимости)
directory="/var/log"  # Каталог для очистки.  Важно: укажите правильный каталог!
days=30              # Возраст файлов для удаления (в днях)
verbose=true         # Выводить подробные сообщения (true/false)
1= "Скрипт выключен"
# Проверка наличия каталога if [ ! -d "$directory" ]; then echo "Ошибка: Каталог '$directory' не существует." >&2 exit 1 fi # Функция для вывода сообщений log() { if $verbose; then echo "$1" fi } # Удаление файлов find "$directory" -type f -mtime +"$days" -print0 | while IFS= read -r -d $'\0' file; do log "Удаление файла: $file" rm -f "$file" if [ $? -ne 0 ]; then log "Ошибка при удалении файла '$file'." >&2 fi done log "Очистка завершена." exit 0

Как использовать скрипт:

  1. Сохраните скрипт: Сохраните код в файл, например clean_old_files.sh.
  2. Сделайте скрипт исполняемым: Откройте терминал и выполните команду chmod +x clean_old_files.sh.
  3. Настройте параметры:
    • directory: Укажите каталог, который вы хотите очистить. Важно: будьте осторожны и убедитесь, что вы указали правильный каталог! Неправильный каталог может привести к потере данных.
    • days: Укажите количество дней, старше которых файлы должны быть удалены.
    • verbose: Установите true для вывода подробных сообщений о процессе очистки или false для тихой работы.
  4. Запустите скрипт: Выполните скрипт из терминала, используя ./clean_old_files.sh.

Пояснения к скрипту:

#!/bin/bash: Указывает, что скрипт должен быть выполнен с помощью bash.

directory="/var/log": Переменная, содержащая путь к каталогу, который нужно очистить.

days=30: Переменная, содержащая возраст файлов в днях, которые будут удалены.

verbose=true: Переменная, определяющая, будут ли выводиться подробные сообщения.

if [ ! -d "$directory" ]; then ... fi: Проверяет, существует ли указанный каталог. Если нет, выводит сообщение об ошибке и завершает скрипт.

log() { ... }: Функция, которая выводит сообщения в терминал, если verbose установлено в true.

find "$directory" -type f -mtime +"$days" -print0 | while IFS= read -r -d $'\0' file; do ... done: Цикл while читает имена файлов, выведенные командой find, по одному.

rm -f "$file": Команда rm -f удаляет файл.

if [ $? -ne 0 ]; then ... fi: Проверяет код возврата последней команды (rm -f).

exit 0: Завершает скрипт с кодом возврата 0.

Безопасность и предостережения:

  • Будьте осторожны с каталогом directory: Убедитесь, что вы правильно указали каталог для очистки.
  • Протестируйте скрипт: Перед использованием скрипта в производственной среде, протестируйте его на тестовом каталоге.
  • Резервное копирование: Перед запуском скрипта рекомендуется сделать резервную копию данных.
  • Использование -f: Опция -f в команде rm удаляет файлы без подтверждения.
  • Использование sudo: Запускайте скрипт с sudo, только если необходимо, и будьте предельно осторожны.

Расширения и улучшения:

  • Логирование: Запись сообщений в файл журнала.
  • Исключения: Исключение определенных файлов или каталогов из процесса очистки.
  • Автоматический запуск: Настройка автоматического запуска скрипта с помощью cron.
  • Параметры командной строки: Передача параметров скрипта через командную строку.
  • Сухой запуск: Отображение списка файлов, которые будут удалены, без фактического удаления.
  • Перемещение в корзину: Перемещение файлов в корзину вместо удаления.
Информация о материале
Просмотров: 47

Настройка DNS-сервера Bind9 (Debian/Ubuntu)

Bind9 — один из самых популярных DNS-серверов. Ниже приведено корректное и безопасное руководство по установке и настройке Bind9 в Debian/Ubuntu.


1. Установка Bind9

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

2. Структура конфигурации Bind9

В Debian/Ubuntu конфигурация разделена на файлы:

  • /etc/bind/named.conf — включает остальные файлы
  • /etc/bind/named.conf.options — глобальные параметры
  • /etc/bind/named.conf.local — ваши зоны
  • /etc/bind/zones/ — рекомендуемое место для файлов зон

3. Настройка глобальных параметров

Файл: /etc/bind/named.conf.options

options {
    directory "/var/cache/bind";

    // Разрешаем рекурсию только локальной сети
    recursion yes;
    allow-recursion { 127.0.0.1; 192.168.1.0/24; };

    // Разрешаем запросы всем (или ограничьте при необходимости)
    allow-query { any; };

    // Внешние DNS для пересылки
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    dnssec-validation auto;

    auth-nxdomain no;
    listen-on-v6 { any; };
};

4. Создание каталогов зон

sudo mkdir -p /etc/bind/zones/master
sudo mkdir -p /etc/bind/zones/reverse

5. Прямая зона (example.com)

Файл: /etc/bind/zones/master/db.example.com

$TTL 86400
@   IN SOA ns1.example.com. admin.example.com. (
        2024062101 ; Serial
        3600        ; Refresh
        1800        ; Retry
        604800      ; Expire
        86400       ; Minimum TTL
)
@       IN NS ns1.example.com.
ns1     IN A 192.168.1.10
@       IN A 192.168.1.20
www     IN A 192.168.1.20
mail    IN A 192.168.1.30
@       IN MX 10 mail.example.com.

6. Обратная зона (192.168.1.0/24)

Файл: /etc/bind/zones/reverse/db.192.168.1

$TTL 86400
@   IN SOA ns1.example.com. admin.example.com. (
        2024062101
        3600
        1800
        604800
        86400
)
@       IN NS ns1.example.com.
10      IN PTR ns1.example.com.
20      IN PTR www.example.com.
30      IN PTR mail.example.com.

7. Добавление зон в Bind9

Файл: /etc/bind/named.conf.local

zone "example.com" {
    type master;
    file "/etc/bind/zones/master/db.example.com";
    allow-transfer { none; };
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse/db.192.168.1";
    allow-transfer { none; };
};

8. Проверка конфигурации

Проверка синтаксиса:

sudo named-checkconf

Проверка зоны:

sudo named-checkzone example.com /etc/bind/zones/master/db.example.com
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/reverse/db.192.168.1

9. Запуск и автозагрузка

sudo systemctl restart bind9
sudo systemctl enable bind9
sudo systemctl status bind9

10. Логирование Bind9

Файл: /etc/bind/named.conf.local

logging {
    channel default_log {
        file "/var/log/bind.log" versions 3 size 10m;
        severity info;
        print-time yes;
    };
    category default { default_log; };
    category queries { default_log; };
};

Создать файл логов:

sudo touch /var/log/bind.log
sudo chown bind:bind /var/log/bind.log

11. Тестирование DNS

Проверка прямой зоны:

dig @127.0.0.1 example.com
dig @127.0.0.1 www.example.com

Проверка обратной зоны:

dig @127.0.0.1 -x 192.168.1.20

Просмотр логов:

tail -f /var/log/bind.log

12. Рекомендации по безопасности

  • Ограничьте рекурсию: allow-recursion { локальная_сеть; };
  • Запретите AXFR: allow-transfer { none; };
  • Используйте DNSSEC: dnssec-validation auto;
  • Разделяйте внутренние/внешние зоны через views
Информация о материале
Просмотров: 56

Справочник встроенных команд Bash (Q–Z)

Команды, начинающиеся на Q, R, S, T, U, V, W, X, Y, Z. Например: read, readonly, return, set, shift, shopt, source, trap, ulimit, unset, wait.

read

Информация о материале
Просмотров: 74

Подробнее: Справочник встроенных команд Bash (Q–Z)

Справочник встроенных команд Bash (G–P)

Команды, начинающиеся на G, H, I, J, K, L, M, N, O, P. Например: getopts, hash, help, jobs, kill, local, mapfile, printf, pwd.

getopts

Информация о материале
Просмотров: 56

Подробнее: Справочник встроенных команд Bash (G–P)

Страница 4 из 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Главное меню

  • Главная страница
    • Docker
    • Обслуживание GNU\Linux
      • DMR и GNU/Linux
    • Операторы связи
  • Соглашение
    • Спам
  • О проекте

Нужна надёжная техническая поддержка или разработка сайта?

Качественный проект требует надёжной технической базы. Если вы создаёте свой сайт, аудио-платформу или нуждаетесь в настройке сложной инфраструктуры, я помогу решить задачи удалённо:

  • Настройка серверов (Windows Server, Linux, KMS, Nextcloud)
  • Работа с сетевым оборудованием (Fibocom, роутеры, VPN)
  • Развёртывание серверов цифровой радиосвязи DMR (HBlink, MMDVM) для создания собственных сетей и управления репитерами
  • Развёртывание почтовых серверов под ключ с гарантией доставки (SPF, DKIM, DMARC)
  • Внедрение локальных AI-систем для генерации текста, изображений и аудио (LLM, Stable Diffusion) с полным контролем над данными
  • Автоматизация через скрипты (PowerShell, Bash) и диагностика лицензий

🌐 Веб-дизайн и разработка: Создаю современные, адаптивные и функциональные сайты. Если вашему проекту нужен не только надёжный сервер «под капотом», но и грамотное визуальное представление, посмотрите примеры моих работ: butjet.ru, clip.svyx.net и alexisiumus.ru.

🔧 Формат: подключение через AnyDesk/RustDesk, оплата по факту выполненной работы.

💬 Обсудить задачу в Telegram 📧 info@svyx.net
Мой блог