Инструменты пользователя

Инструменты сайта


projects:linux:manual_backup_scripts:clean

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
projects:linux:manual_backup_scripts:clean [2025/04/07 10:29] projects:linux:manual_backup_scripts:clean [2025/04/11 17:41] (текущий)
Строка 1: Строка 1:
 ====== Легкая очистка системы от мусора ====== ====== Легкая очистка системы от мусора ======
  
-Входит в набор [[projects:linux:manual_backup_scripts|rPi Seal]]+//**Входит в набор [[projects:linux:manual_backup_scripts|rPi Seal]]**//
  
 <code bash clean_and_zero.sh> <code bash clean_and_zero.sh>
Строка 9: Строка 9:
 # ==DIS/AUTOEXEC== # ==DIS/AUTOEXEC==
 # === SD Safe Cleaner === # === SD Safe Cleaner ===
-clean_and_zero.sh Меню очистки и подготовки SD перед созданием образа+03_clean_and_zero.sh Меню очистки и подготовки SD перед созданием образа
 # может использоваться как самостоятельный скрипт # может использоваться как самостоятельный скрипт
 +#
  
 set -e set -e
Строка 91: Строка 92:
 run_zero_fill_img() { run_zero_fill_img() {
   echo "📦 Заполнение нулями образа .img/.img.gz (USB/SSD/NAS)" | tee -a "$LOG_FILE"   echo "📦 Заполнение нулями образа .img/.img.gz (USB/SSD/NAS)" | tee -a "$LOG_FILE"
 +
 +  command -v gunzip >/dev/null || { echo "❌ Требуется gunzip"; return; }
  
   DEV_PATHS=( $(lsblk -nrpo MOUNTPOINT | grep -E '^/mnt' | sort -u) )   DEV_PATHS=( $(lsblk -nrpo MOUNTPOINT | grep -E '^/mnt' | sort -u) )
Строка 107: Строка 110:
   done   done
   echo "0 - Отмена"   echo "0 - Отмена"
-  read -rp "👉 Ваш выбор: " choice +  read -rp "👉 Ваш выбор: " path_choice 
-  [[ "$choice" == "0" || -z "$choice" ]] && echo "❎ Отменено." && return+  [[ "$path_choice" == "0" || -z "$path_choice" ]] && echo "❎ Отменено." && return
  
-  TARGET_DIR="${DEV_PATHS[$((choice-1))]}"+  TARGET_DIR="${DEV_PATHS[$((path_choice-1))]}"
  
   mapfile -t IMG_LIST < <(find "$TARGET_DIR" -maxdepth 1 -type f \( -name "*.img" -o -name "*.img.gz" \))   mapfile -t IMG_LIST < <(find "$TARGET_DIR" -maxdepth 1 -type f \( -name "*.img" -o -name "*.img.gz" \))
Строка 135: Строка 138:
     TEMP_UNPACKED="${SELECTED_IMG%.gz}"     TEMP_UNPACKED="${SELECTED_IMG%.gz}"
     gunzip -kf "$SELECTED_IMG" || { echo "❌ Ошибка при распаковке" | tee -a "$LOG_FILE"; return; }     gunzip -kf "$SELECTED_IMG" || { echo "❌ Ошибка при распаковке" | tee -a "$LOG_FILE"; return; }
 +    [[ ! -f "$TEMP_UNPACKED" ]] && echo "❌ Файл не распаковался" | tee -a "$LOG_FILE" && return
     IMGFILE="$TEMP_UNPACKED"     IMGFILE="$TEMP_UNPACKED"
   else   else
Строка 144: Строка 148:
  
   sudo mkdir -p /mnt/rpi_zero   sudo mkdir -p /mnt/rpi_zero
-  sudo mount "${LOOP_DEV}p2" /mnt/rpi_zero || {+  PART=$(ls "${LOOP_DEV}"p* 2>/dev/null | tail -n1) 
 +  [[ -z "$PART" ]] && echo "❌ Не найден раздел в $LOOP_DEV" | tee -a "$LOG_FILE" && sudo losetup -d "$LOOP_DEV" && return 
 + 
 +  sudo mount "$PART" /mnt/rpi_zero || {
     echo "❌ Ошибка монтирования" | tee -a "$LOG_FILE"     echo "❌ Ошибка монтирования" | tee -a "$LOG_FILE"
     sudo losetup -d "$LOOP_DEV"     sudo losetup -d "$LOOP_DEV"
Строка 171: Строка 178:
   echo " 00 - ❌ Выход"   echo " 00 - ❌ Выход"
   echo ""   echo ""
-  read -rp "👉 Ваш выбор: " choice+  read -rp "👉 Ваш выбор: " main_choice
  
-  case "$choice" in+  case "$main_choice" in
     1) run_cleaning ;;     1) run_cleaning ;;
     2) run_zero_fill ;;     2) run_zero_fill ;;
Строка 185: Строка 192:
 echo "✅ Завершено. Лог: $LOG_FILE" echo "✅ Завершено. Лог: $LOG_FILE"
 exit 0 exit 0
 +
 </code> </code>
 +===== ******* =====
 +[[https://boosty.to/takraztak/donate|Поддержать через Boosty]]
projects/linux/manual_backup_scripts/clean.1744010972.txt.gz · Последнее изменение: 2025/04/07 10:29 —

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki