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

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


projects:linux:manual_backup_scripts:mount_usb

Mount USB

Входит в набор rPi Seal

select_target.sh
#!/bin/bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# ==DIS/AUTOEXEC==
# === Select ===
# 01_select_target.sh — выбор целевого диска или каталога, монтирование и экспорт пути
#
 
set -euo pipefail
 
TARGET_FILE=".rpi_seal_target"
 
# Очистка старого пути при запуске
[[ -f "$TARGET_FILE" ]] && rm -f "$TARGET_FILE"
 
# Поиск и выбор устройства для монтирования
mapfile -t DEVICES < <(lsblk -nrpo NAME,SIZE,MOUNTPOINT,TYPE | grep -E "/dev/sd|/dev/nvme" | awk '$4 == "part" {print $1":"$2":"$3}')
if [[ ${#DEVICES[@]} -eq 0 ]]; then
  echo "❌ Нет доступных устройств-разделов."
  exit 1
fi
 
echo "💾 Выберите раздел устройства для сохранения образа:"
i=1
for dev in "${DEVICES[@]}"; do
  IFS=":" read -r name size mnt <<< "$dev"
  status=""
  [[ -z "$mnt" ]] && status="🔌 не примонтировано"
  echo "$i - $name ($size) $mnt $status"
  ((i++))
done
 
echo "0 - Отмена"
read -rp "👉 Ваш выбор: " choice
 
# Проверка на отмену или некорректный ввод
if [[ "$choice" == "0" || -z "$choice" ]]; then
  echo "❎ Отменено."
  exit 0
fi
 
if ! [[ "$choice" =~ ^[0-9]+$ ]] || (( choice < 1 || choice > ${#DEVICES[@]} )); then
  echo "❌ Неверный выбор."
  exit 1
fi
 
# Выбранный раздел
SEL_DEV="${DEVICES[$((choice-1))]}"
IFS=":" read -r DEV_NAME DEV_SIZE DEV_MNT <<< "$SEL_DEV"
 
# Проверка: примонтирован ли раздел
MOUNTED_PATH=$(lsblk -nrpo NAME,MOUNTPOINT "$DEV_NAME" | awk '$2!="" {print $2; exit}')
if [[ -n "$MOUNTED_PATH" ]]; then
  echo "⚠️ Раздел уже примонтирован."
  echo "✅ Используем: $MOUNTED_PATH"
  echo "$MOUNTED_PATH" > "$TARGET_FILE"
  chmod 600 "$TARGET_FILE"
  exit 0
fi
 
# Если не примонтировано — монтируем в свободную точку
i=0
while true; do
  MNT_PATH="/mnt/rpi_target$i"
  if ! mountpoint -q "$MNT_PATH"; then
    break
  fi
  ((i++))
done
 
sudo mkdir -p "$MNT_PATH"
if sudo mount "$DEV_NAME" "$MNT_PATH"; then
  echo "✅ Раздел примонтирован в $MNT_PATH"
  echo "$MNT_PATH" > "$TARGET_FILE"
  chmod 600 "$TARGET_FILE"
else
  echo "❌ Не удалось примонтировать $DEV_NAME"
  exit 1
fi

*******

projects/linux/manual_backup_scripts/mount_usb.txt · Последнее изменение: 2025/04/11 17:40 —

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