Dla wyjaśnienia:
Zamiast używać apt dla Debiana, zainstalowałem nakładkę nala, która umożliwia między innymi możliwość usuwania wprowadzonych zmian.
Chciałem mieć możliwość zaktualizować system i zarazem konserwacji (usuwanie) niepotrzebne pliki „konserwacja systemu".
Wydając komendę
sudo ./aktualizacja.sh
W przypadku gdy coś pójdzie nie tak wydam komendę
sudo ./konserwacja.sh --undo
Jak działa skrypt:
Sprawdza aktualizacje systemu i flatpaków.
Pobiera i aktualizuje.
Usuwa niepotrzebne pliki.
Wyświetla na ekranie postęp (tryb gadatliwy).
Zapisuje do plików log, co zrobił.
Usuwa pliki log (500 MB i starszych niż 3 tygodnie).
Co powinienem zmienić lub dodać do skryptu,
Kod: Zaznacz cały
#!/bin/bash
LOG_FILE="/var/log/konserwacja.log"
log_and_print() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
UNDO=false
# Sprawdzenie flagi --undo
for arg in "$@"; do
if [[ "$arg" == "--undo" ]]; then
UNDO=true
fi
done
log_and_print "=== Rozpoczęcie konserwacji systemu ==="
if $UNDO; then
log_and_print "Cofanie ostatniej aktualizacji za pomocą nala."
nala history undo 2>&1 | tee -a "$LOG_FILE"
log_and_print "Ostatnia aktualizacja została cofnięta."
else
log_and_print "Pominięto cofanie ostatniej aktualizacji."
fi
# Aktualizacja systemu za pomocą nala
log_and_print "Aktualizacja listy pakietów za pomocą nala."
nala update 2>&1 | tee -a "$LOG_FILE"
log_and_print "Aktualizacja systemu za pomocą nala."
nala upgrade -y 2>&1 | tee -a "$LOG_FILE"
# Aktualizacja Flatpak
log_and_print "Aktualizacja pakietów Flatpak."
flatpak update 2>&1 | tee -a "$LOG_FILE"
# Usuwanie nieużywanych pakietów i czyszczenie systemu
log_and_print "Usuwanie nieużywanych pakietów i czyszczenie systemu."
nala autoremove -y 2>&1 | tee -a "$LOG_FILE"
nala clean 2>&1 | tee -a "$LOG_FILE"
# Usuwanie nieużywanych Flatpaków
log_and_print "Usuwanie nieużywanych Flatpaków."
flatpak uninstall --unused -y 2>&1 | tee -a "$LOG_FILE"
# Czyszczenie pamięci podręcznej użytkownika
log_and_print "Czyszczenie pamięci podręcznej użytkownika."
rm -rf ~/.cache/* 2>&1 | tee -a "$LOG_FILE"
# Czyszczenie logów apt
log_and_print "Czyszczenie logów apt."
sudo rm -rf /var/log/apt/* 2>&1 | tee -a "$LOG_FILE"
# Optymalizacja logów systemowych
log_and_print "Optymalizacja logów systemowych."
sudo journalctl --vacuum-size=500M 2>&1 | tee -a "$LOG_FILE"
sudo journalctl --vacuum-time=3weeks 2>&1 | tee -a "$LOG_FILE"
log_and_print "=== Konserwacja systemu zakończona ==="