База знаний (цифровой суверенитет)
  • Bash - работа с дисками и другими накопителями

    Команды BASH
    1 4 14

    A
    1,168
    0

    Содержание

  • A
    1,168
    0

    Увеличение свободного места системного диска Linux


    Безопасно удаляем:

    1. Большие активные файлы логов в /var/log/ (например, syslog, kern.log, daemon.log, которые Logrotate еще не успел ротировать).
    2. Ротированные сжатые файлы (*.gz, *.1, и т.д.) в /var/log/, которые также не попали в список подкаталогов.

    🛠️ План очистки

    Вам нужно выполнить обе процедуры, чтобы получить максимальный эффект, начиная с наиболее безопасных:

    1. Очистка журналов Systemd (Journald)

    Это самая большая видимая статья (201M, которая должна была быть больше 3ГБ, но, возможно, вы уже частично их чистили). Выполните ограничение по времени и размеру для безопасности:

    • Очистка записей старше 7 дней:

      sudo journalctl --vacuum-time=7d
      
    • Ограничение максимального размера до 500M (если проблема повторяется):

      sudo journalctl --vacuum-size=500M
      

      Этот шаг гарантирует, что Journald не будет снова занимать гигабайты.


    2. Очистка старых ротированных логов (Logrotate files)

    # Найти и удалить все сжатые файлы логов (.gz)
    sudo find /var/log/ -name "*.gz" -delete
    
    # Найти и удалить все старые файлы логов, созданные ротацией (например, .1, .2, .old)
    sudo find /var/log/ -name "*.[0-9]" -delete
    sudo find /var/log/ -name "*.old" -delete
    

    3. Очистка активных больших файлов

    Если после выполнения шагов 1 и 2 все еще остается большой объем (более 100 МБ) в /var/log, значит, у вас есть один или несколько очень больших, активных файлов логов (например, syslog).

    ВНИМАНИЕ: Мы очищаем (truncate), а не удаляем эти файлы, чтобы не нарушить работу служб:

    # Очистка основного системного лога (если он большой)
    sudo truncate -s 0 /var/log/syslog
    
    # Очистка лога ядра (если он большой)
    sudo truncate -s 0 /var/log/kern.log
    
    # Перезапуск службы логов для гарантии
    sudo systemctl restart rsyslog
    

    После выполнения Шагов 1 и 2, запустите sudo du -sh /var/log еще раз. Общий размер должен значительно уменьшиться.

    Проверьте, какие именно большие файлы находятся в /var/log/ (а не в подкаталогах), чтобы точно знать, что вы очищаете

    sudo ls -lh /var/log/
    

    🛡️ Почему эти команды безопасны

    1. Целевое удаление: Команды нацелены исключительно на файлы, которые уже прошли ротацию (Logrotate) и являются архивами или старыми копиями активных журналов.

      • Файлы с расширением .gz — это сжатые, очень старые копии логов.
      • Файлы с расширением .[0-9] (например, .1, .2, .3) — это старые копии логов, которые были заменены более новыми.
      • Файлы с расширением .old — это также старые, переименованные копии.
    2. Не затрагивают активные службы:

      • Эти команды не удаляют активные, текущие файлы журналов (например, /var/log/syslog, /var/log/kern.log, /var/log/nginx/access.log).
      • Они не затрагивают базу данных Systemd Journal (/var/log/journal/), которую мы очищали отдельной командой ранее.
      • Они не нарушают работу служб, которые прямо сейчас пишут в активные логи.
    3. Использование find и -delete: Команда find с опцией -delete — это безопасный и эффективный способ массового удаления файлов, найденных по конкретному шаблону.

    Вывод: Смело запускайте эти три команды. Они предназначены именно для того, чтобы освободить место, занятое архивами и старыми копиями системных и прикладных журналов, не влияя на стабильность работы.

    После их выполнения вы должны увидеть значительное уменьшение размера каталога /var/log.


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

    Вот список наиболее безопасных действий, которые стоит выполнить в первую очередь:

    🗑️ Очистка пакетов APT

    Система управления пакетами APT со временем накапливает кэши и ненужные зависимости.

    • Удаление неиспользуемых зависимостей:
      Эта команда удаляет пакеты, которые были установлены автоматически как зависимости для других программ, но теперь эти программы удалены, и сами зависимости больше не нужны.

      sudo apt autoremove
      
    • Очистка кэша загруженных пакетов:
      APT сохраняет копии загруженных установочных файлов (.deb) в каталоге /var/cache/apt/archives. Их можно удалить.

      • Очистка кэша только для устаревших пакетов:
        sudo apt autoclean
        
      • Полная очистка кэша APT (освободит больше всего места):
        sudo apt clean
        

    🧹 Удаление старых ядер Linux

    При обновлении системы могут устанавливаться новые версии ядра Linux, а старые остаются для возможности отката. Если система работает стабильно, можно удалить старые ядра, оставив только текущее и, возможно, одно предыдущее на всякий случай. Старые ядра и связанные с ними заголовки (linux-image-* и linux-headers-*) могут занимать значительное место, особенно в разделе /boot.

    Для автоматического и безопасного удаления старых неиспользуемых ядер можно воспользоваться командой autoremove (если ядра были установлены как зависимости):

    sudo apt autoremove --purge
    

    Флаг --purge гарантирует, что будут удалены и конфигурационные файлы.


    📄 Очистка журналов и временных файлов

    • Очистка системного журнала (Journald):
      Журналы могут накапливаться и занимать много места в каталоге /var/log. Вы можете ограничить их размер или удалить старые записи.
      • Удаление записей старше, например, 7 дней:
        sudo journalctl --vacuum-time=7d
        
      • Ограничение максимального размера журнала (например, до 100M):
        sudo journalctl --vacuum-size=100M
        
    • Очистка временных файлов:
      Многие временные файлы хранятся в /tmp, но обычно они автоматически очищаются при перезагрузке. Если вы не перезагружались долгое время, вы можете очистить их вручную. Будьте осторожны с ручной очисткой, лучше полагаться на автоматическую:
      sudo rm -rf /tmp/*
      

    📦 Удаление "осиротевших" конфигурационных файлов

    После полного удаления пакетов иногда остаются их конфигурационные файлы (статус rc - removed, config files). Эти файлы обычно очень маленькие, но их можно удалить, если вы уверены, что не будете снова устанавливать эти программы.

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

    1. Показать пакеты с "осиротевшими" конфигами:

      dpkg -l | grep '^rc'
      
    2. Полное удаление (purge) этих пакетов:

      dpkg -l | awk '/^rc/ {print $2}' | sudo xargs dpkg --purge
      

      Эта команда извлекает имена всех пакетов со статусом rc и передает их для полного удаления.


    🖥️ Использование сторонних утилит (опционально)

    Существуют графические утилиты, такие как Ubuntu Cleaner или BleachBit, которые предоставляют удобный интерфейс для выполнения многих из этих задач, включая очистку кэша браузеров и миниатюр. Если вам некомфортно работать в терминале, можете рассмотреть их установку, но будьте внимательны при выборе опций очистки.

    Главное правило: всегда выполняйте команды очистки с sudo и точно знайте, что вы удаляете, чтобы не повредить работающую систему.

  • A
    1,168
    0

    Просмотр занятого места на диске


    Вот актуальный на 2025 год набор команд для анализа занятого места в Linux — от самых быстрых и красивых до максимально точных.

    Топ-8 рабочих команд (копируй-вставляй)

    # 1. Самая красивая и удобная (2025 стандарт)
    sudo ncdu /                     # интерактивный ncdu (лучше всего)
    
    # 2. Классика с сортировкой по размеру (мой ежедневный выбор)
    sudo du -h --max-depth=1 / 2>/dev/null | sort -hr
    
    # 3. Топ-15 самых тяжёлых каталогов в системе
    sudo du -h --max-depth=3 / 2>/dev/null | sort -hr | head -15
    
    # 4. Только реальные каталоги (без виртуальных /proc, /sys, /dev)
    sudo du -h --max-depth=1 --exclude={/dev,/proc,/sys,/tmp,/run} / | sort -hr
    
    # 5. Быстрый анализ корня + сортировка
    sudo du -sh /* 2>/dev/null | sort -hr
    
    # 6. Что именно жрёт место в /home (включая скрытые папки)
    du -sh ~/.??* ~/* | sort -hr | head -20
    
    # 7. Самые большие файлы в системе (топ-50)
    sudo find / -type f -printf '%s %p\n' 2>/dev/null | sort -nr | head -50 | numfmt --to=iec-i --suffix=B
    
    # 8. Графический анализ (GUI, но из терминала)
    sudo baobab /                   # или gnome-disks → правый клик → Analyze
    

    Установка лучших утилит (одной строкой)

    # Debian / Ubuntu / Mint / Pop!_OS
    sudo apt install ncdu tree baobab numfmt
    
    # Fedora / Alma / Rocky
    sudo dnf install ncdu tree baobab numfmt
    
    # Arch / Manjaro
    sudo pacman -S ncdu tree baobab numfmt
    

    Мои личные алиасы (добавь в ~/.bashrc или ~/.zshrc)

    alias big="sudo du -h --max-depth=1 / 2>/dev/null | sort -hr"
    alias big2="sudo du -h --max-depth=2 / 2>/dev/null | sort -hr | head -30"
    alias bigfiles="sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr"
    alias cleanme="sudo du -sh ~/.cache/* /var/cache/* /tmp/* 2>/dev/null | sort -hr"
    

    Однострочники для самых частых задач

    # Что жрёт место в /var
    sudo du -h --max-depth=2 /var | sort -hr | head -20
    
    # Docker — сколько весит?
    sudo du -h /var/lib/docker | sort -hr | head -10
    
    # Snap-пакеты (часто жрут 10–30 ГБ)
    sudo du -h /var/lib/snapd/snaps | sort -hr
    
    # Самые жирные папки пользователя
    du -sh ~/* ~/.local/* ~/.cache/* 2>/dev/null | sort -hr | head -15
    

    Самая лучшая команда на все случаи жизни (2025)

    sudo ncdu --exclude-caches --exclude-kernels / 
    
    • Интерактивная
    • Показывает в ГБ/МБ
    • Можно удалять прямо из интерфейса
    • Исключает мусор
    • Работает в 100 раз быстрее, чем du

    Итог: запомни всего три команды

    sudo ncdu /                     # лучшее, что есть
    sudo du -h --max-depth=1 / | sort -hr   # классика
    sudo du -sh /* | sort -hr       # когда лень писать много
    

    Больше ничего придумывать не надо.
    С ncdu ты найдёшь любой «пожиратель» места за 10 секунд.

  • A
    1,168
    0

    Узнать общий размер текущего каталога


    Вот актуальный на 2025 год набор команд для быстрого и точного определения размера текущего (или любого) каталога. Всё работает везде: Ubuntu, Debian, Fedora, Arch, Alpine и т.д.

    Топ-7 команд (копируй-вставляй)

    # 1. Самая популярная и правильная (2025 стандарт)
    du -sh .                        # размер текущей папки
    
    # 2. Ещё быстрее и красивее (мой ежедневный выбор)
    du -sh --apparent-size .        # реальный размер файлов (а не блоков на диске)
    
    # 3. Размер без учёта скрытых папок (полезно в /home)
    du -sh -- *                     # только видимые папки и файлы
    
    # 4. Размер с учётом только реальных файлов (игнорирует sparse-файлы, Docker-образы и т.п.)
    du -sh --apparent-size --exclude="*.img" --exclude="*.qcow2" .
    
    # 5. Самый быстрый способ (не сканирует содержимое, только метаданные)
    dust -r .                       # после установки: cargo install dust или sudo apt install dust
    
    # 6. Интерактивный и самый красивый (рекомендую всем)
    ncdu .                          # покажет всё дерево + можно удалять прямо из интерфейса
    
    # 7. Размер в байтах (удобно для скриптов)
    du -sb .                        # точное количество байт
    

    Полезные вариации

    # Размер нескольких папок сразу
    du -sh ~/{Downloads,Documents,Desktop,.cache,.local} 2>/dev/null | sort -hr
    
    # Размер только папок первого уровня (с сортировкой)
    du -sh ./* | sort -hr
    
    # Размер с исключениями (например, без node_modules и .git)
    du -sh --exclude="./node_modules" --exclude="./.git" .
    
    # Самые жирные папки внутри текущей (топ-20)
    du -h --max-depth=2 . 2>/dev/null | sort -hr | head -20
    

    Установка самых удобных утилит (2025)

    # Ubuntu/Debian/Mint
    sudo apt install ncdu dust   # dust — это как du, но в 10 раз быстрее и красивее
    
    # Fedora
    sudo dnf install ncdu dust
    
    # Arch/Manjaro
    sudo pacman -S ncdu dust
    

    Мои алиасы (добавь в ~/.bashrc или ~/.zshrc)

    alias size="du -sh ."
    alias sizeof="du -sh"          # sizeof Downloads
    alias big="du -h --max-depth=1 . | sort -hr"
    alias fat="dust -r"
    alias clean="ncdu ~"
    

    Итог: запомни всего три команды на всю жизнь

    du -sh .          # классика, всегда работает
    dust .            # самый быстрый и красивый (2025)
    ncdu .            # когда нужно покопаться и почистить
    

    Больше ничего придумывать не надо.
    dust и ncdu — это то, чем пользуются все продвинутые линуксоиды в 2025 году.