projects:linux:manual_backup_scripts:clean
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
projects:linux:manual_backup_scripts:clean [2025/04/07 10:26] – создано | projects:linux:manual_backup_scripts:clean [2025/04/11 17:41] (текущий) – | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Легкая очистка системы от мусора ====== | ====== Легкая очистка системы от мусора ====== | ||
- | Входит в набор [[projects: | + | //**Входит в набор [[projects: |
+ | |||
+ | <code bash clean_and_zero.sh> | ||
+ | # | ||
+ | export LANG=en_US.UTF-8 | ||
+ | export LC_ALL=en_US.UTF-8 | ||
+ | # ==DIS/ | ||
+ | # === SD Safe Cleaner === | ||
+ | # 03_clean_and_zero.sh Меню очистки и подготовки SD перед созданием образа | ||
+ | # может использоваться как самостоятельный скрипт | ||
+ | # | ||
+ | |||
+ | set -e | ||
+ | |||
+ | LOG_DIR=" | ||
+ | LOG_FILE=" | ||
+ | mkdir -p " | ||
+ | |||
+ | DATE=$(date ' | ||
+ | echo -e " | ||
+ | |||
+ | confirm() { | ||
+ | echo -ne "\n$1 [y/N]: " | ||
+ | read -r reply | ||
+ | [[ " | ||
+ | } | ||
+ | |||
+ | get_disk_usage_bytes() { | ||
+ | df -B1 / | awk 'NR==2 {print $4}' | ||
+ | } | ||
+ | |||
+ | human_readable() { | ||
+ | numfmt --to=iec-i --suffix=B " | ||
+ | } | ||
+ | |||
+ | initial_space=$(get_disk_usage_bytes) | ||
+ | |||
+ | report_freed_space() { | ||
+ | local current_space=$(get_disk_usage_bytes) | ||
+ | local diff=$((current_space - initial_space)) | ||
+ | echo "📦 Освобождено: | ||
+ | initial_space=$current_space | ||
+ | } | ||
+ | |||
+ | run_cleaning() { | ||
+ | echo "🧹 Запуск очистки системы..." | ||
+ | |||
+ | if confirm " | ||
+ | sudo apt clean && echo "✓ Кэш APT очищен" | ||
+ | report_freed_space | ||
+ | fi | ||
+ | |||
+ | if confirm " | ||
+ | sudo apt autoremove --purge -y | tee -a " | ||
+ | report_freed_space | ||
+ | fi | ||
+ | |||
+ | if confirm " | ||
+ | sudo journalctl --vacuum-time=7d | tee -a " | ||
+ | report_freed_space | ||
+ | fi | ||
+ | |||
+ | if confirm " | ||
+ | sudo rm -rf /tmp/* && echo "✓ /tmp очищен" | ||
+ | report_freed_space | ||
+ | fi | ||
+ | |||
+ | if confirm " | ||
+ | sudo find /var/log -type f \( -name ' | ||
+ | report_freed_space | ||
+ | fi | ||
+ | |||
+ | echo -e " | ||
+ | sudo ls -lh / | ||
+ | if confirm " | ||
+ | sudo find / | ||
+ | echo "✓ Удалено содержимое / | ||
+ | report_freed_space | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | run_zero_fill() { | ||
+ | echo " | ||
+ | sudo dd if=/ | ||
+ | sudo rm -f /zerofill | ||
+ | echo "✅ Обнуление завершено." | ||
+ | report_freed_space | ||
+ | } | ||
+ | |||
+ | run_zero_fill_img() { | ||
+ | echo "📦 Заполнение нулями образа .img/ | ||
+ | |||
+ | command -v gunzip >/ | ||
+ | |||
+ | DEV_PATHS=( $(lsblk -nrpo MOUNTPOINT | grep -E ' | ||
+ | [[ -d / | ||
+ | |||
+ | if [[ ${# | ||
+ | echo "❌ Не найдено доступных точек монтирования." | ||
+ | return | ||
+ | fi | ||
+ | |||
+ | echo "💾 Выберите источник .img/ | ||
+ | i=1 | ||
+ | for path in " | ||
+ | echo "$i - $path" | ||
+ | ((i++)) | ||
+ | done | ||
+ | echo "0 - Отмена" | ||
+ | read -rp "👉 Ваш выбор: " path_choice | ||
+ | [[ " | ||
+ | |||
+ | TARGET_DIR=" | ||
+ | |||
+ | mapfile -t IMG_LIST < <(find " | ||
+ | if [[ ${# | ||
+ | echo "❌ Не найдено .img или .img.gz файлов в $TARGET_DIR" | ||
+ | return | ||
+ | fi | ||
+ | |||
+ | echo " | ||
+ | i=1 | ||
+ | for img in " | ||
+ | echo "$i - $img" | ||
+ | ((i++)) | ||
+ | done | ||
+ | |||
+ | echo "0 - Отмена" | ||
+ | read -rp "👉 Выберите образ: " img_choice | ||
+ | [[ " | ||
+ | SELECTED_IMG=" | ||
+ | |||
+ | TEMP_UNPACKED="" | ||
+ | if [[ " | ||
+ | echo "[*] Распаковка временного образа..." | ||
+ | TEMP_UNPACKED=" | ||
+ | gunzip -kf " | ||
+ | [[ ! -f " | ||
+ | IMGFILE=" | ||
+ | else | ||
+ | IMGFILE=" | ||
+ | fi | ||
+ | |||
+ | LOOP_DEV=$(sudo losetup --show -Pf " | ||
+ | [[ -b " | ||
+ | |||
+ | sudo mkdir -p / | ||
+ | PART=$(ls " | ||
+ | [[ -z " | ||
+ | |||
+ | sudo mount " | ||
+ | echo "❌ Ошибка монтирования" | ||
+ | sudo losetup -d " | ||
+ | [[ -n " | ||
+ | return | ||
+ | } | ||
+ | |||
+ | echo " | ||
+ | sudo dd if=/ | ||
+ | sudo rm -f / | ||
+ | echo "✅ Обнуление завершено в образе" | ||
+ | |||
+ | sudo umount / | ||
+ | sudo losetup -d " | ||
+ | [[ -n " | ||
+ | } | ||
+ | |||
+ | # === Меню === | ||
+ | while true; do | ||
+ | echo "" | ||
+ | echo "🧼 Меню очистки SD перед созданием образа:" | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " 00 - ❌ Выход" | ||
+ | echo "" | ||
+ | read -rp "👉 Ваш выбор: " main_choice | ||
+ | |||
+ | case " | ||
+ | 1) run_cleaning ;; | ||
+ | 2) run_zero_fill ;; | ||
+ | 3) run_zero_fill_img ;; | ||
+ | 0) break ;; | ||
+ | 00) echo "🚪 Выход."; | ||
+ | *) echo "❗ Неверный ввод" | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | echo "✅ Завершено. Лог: $LOG_FILE" | ||
+ | exit 0 | ||
+ | |||
+ | </ | ||
+ | ===== ******* ===== | ||
+ | [[https:// |
projects/linux/manual_backup_scripts/clean.1744010786.txt.gz · Последнее изменение: 2025/04/07 10:26 —