Восстановление пакетов, ФС, прав и сервисов в Linux/Unix. Штатные утилиты, безопасные скрипты, бэкапы и откаты системы.
2026.04.22
#Linux
#unix
#BASH
#sysadmin
#DevOps
#Recovery
#troubleshooting
#scripting
Полный гайд по восстановлению Linux-систем штатными средствами
Ниже представлен подробный гайд по штатным и проверенным альтернативам, которые покрывают 99% сценариев «починки» Unix-подобных систем в 2026 году.
1. Исправление пакетов и зависимостей
| Задача |
Debian/Ubuntu |
RHEL/Fedora |
Arch |
Примечание |
| Прерванная установка |
dpkg --configure -a |
dnf history undo last |
pacman -S --needed |
Сначала всегда обновляйте списки: apt update / dnf check-update |
| Сломанные зависимости |
apt-get -f install |
dnf distro-sync |
pacman -Syu |
-f = fix-broken, не удаляйте пакеты без --dry-run |
| Проверка целостности пакетов |
debsums -s |
rpm -Va |
pacman -Qk |
Выведет изменённые/отсутствующие файлы из пакетов |
| Пересборка кэша |
apt-get clean && apt-get update |
dnf clean all |
pacman -Sc |
Помогает при рассинхроне метаданных |
Автоматизация:
#!/usr/bin/env bash
set -euo pipefail
echo "[*] Обновление метаданных..."
sudo apt update -qq || sudo dnf check-update -q || sudo pacman -Sy --noconfirm
echo "[*] Исправление зависимостей..."
sudo apt-get -f install -y || sudo dnf distro-sync -y || sudo pacman -Su --noconfirm
echo "[*] Переконфигурация прерванных пакетов..."
sudo dpkg --configure -a 2>/dev/null || true
echo "[✓] Готово."
2. Проверка и восстановление файловых систем
Важно:
- Никогда не запускайте
fsck на смонтированной в RW корневой ФС! Используйте LiveUSB или emergency.target.
| ФС |
Команда проверки |
Команда восстановления |
Ключи |
| ext4/ext3 |
e2fsck -fn /dev/sdXN |
e2fsck -y /dev/sdXN |
-f force, -n dry-run, -y auto-yes |
| XFS |
xfs_repair -n /dev/sdXN |
xfs_repair /dev/sdXN |
Требует unmount. Для journal-проблем: xfs_repair -L (только если уверены) |
| Btrfs |
btrfs check /dev/sdXN |
btrfs check --repair /dev/sdXN |
--repair опасен, используйте только после бэкапа |
| ZFS |
zpool status, zpool scrub poolname |
zpool clear poolname, zfs rollback |
Авто-лечение через resilver/scrub |
Проверка всех локальных дисков без root:
lsblk -no NAME,TYPE,FSTYPE,MOUNTPOINT | awk '$2=="part" && $4!~/(swap|\/boot)/ {print "/dev/"$1}'
3. Права, владельцы, SELinux/AppArmor
Частая причина «всё сломалось после chmod -R 777».
| Задача |
Команда |
Комментарий |
Восстановить стандартные права на /etc |
sudo dpkg-statoverride --list | awk '{print $4}' | xargs -I{} sudo chmod 644 {} |
Debian-специфично |
| Рекурсивный фикс прав (безопасный) |
find /path -type f -exec chmod 644 {} + && find /path -type d -exec chmod 755 {} + |
Никогда не запускайте на / или /var без фильтра |
| SELinux контексты |
restorecon -Rv /path |
setenforce 0 только для диагностики, не для продакшена |
| AppArmor профили |
sudo aa-enforce /etc/apparmor.d/*, sudo systemctl restart apparmor |
Логи: journalctl -u apparmor |
4. Диагностика сервисов, логов и ядра
| Инструмент |
Что делает |
Пример |
systemctl |
Управление юнитами |
systemctl list-units --failed, systemctl reset-failed |
journalctl |
Логи systemd |
journalctl -xeu service_name, journalctl --vacuum-size=500M |
dmesg |
Сообщения ядра |
dmesg -T | grep -iE 'error|fail|oom' |
strace/ltrace |
Трассировка вызовов |
strace -f -e trace=file,process -p <PID> |
lsof |
Открытые файлы/порты |
lsof -i :80, lsof +D /var/log |
Быстрый чеклист при «система не грузится»:
- В GRUB добавить
systemd.unit=multi-user.target или init=/bin/bash
mount -o remount,rw /
journalctl -xb → ищите failed, timeout, dependency
systemctl list-dependencies --reverse failed.service
5. Целостность системы и безопасность
| Утилита |
Назначение |
Как использовать |
rkhunter, chkrootkit |
Поиск руткитов |
sudo rkhunter --check --sk |
AIDE, Tripwire |
Хэширование файлов |
aide --init, aide --check |
debsums, rpm -V |
Сверка с репозиторием |
sudo debsums -a 2>/dev/null | grep FAILED |
lynis |
Аудит безопасности |
sudo lynis audit system |
6. Резервное копирование и откат
В 2026 году многие дистрибутивы перешли на иммутабельные рутовые ФС (Silverblue, MicroOS, NixOS, Ubuntu Core). Для них традиционные fsck и chmod не применяются.
| Подход |
Инструмент |
Комментарий |
| Снимки Btrfs/ZFS |
snapper, timeshift, zfs send/receive |
Откат за секунды, работает на уровне ФС |
| Пакетный откат |
dnf history rollback, aptitude markauto, pacman -U |
Восстановление старых версий пакетов |
| Конфиги |
etckeeper (git для /etc), chezmoi |
Автоматический коммит при apt/dnf |
| Полная копия |
borgbackup, restic, rsync -aAXv --numeric-ids |
Дедупликация, шифрование, инкремент |
Пример отката через Timeshift (Btrfs/ext4):
sudo timeshift --list
sudo timeshift --restore --snapshot '2026-04-20_15-30-00'
sudo reboot
Важные правила безопасности
- Всегда делайте бэкап перед массовыми изменениями:
tar czf /backup/etc-$(date +%F).tar.gz /etc
- Не запускайте незнакомые скрипты от root без
set -x и dry-run режима.
- Используйте
--dry-run / -n / --simulate где возможно.
- В иммутабельных системах не пытайтесь чинить
/usr или / напрямую – используйте rpm-ostree, nixos-rebuild или снапшоты.
- Для продакшена ведите инвентаризацию:
ansible, salt, puppet или хотя бы git + etckeeper.