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 · Последнее изменение: —
