projects:linux:manual_backup_scripts:create_img_sd_usb
Различия
Показаны различия между двумя версиями страницы.
| projects:linux:manual_backup_scripts:create_img_sd_usb [2025/04/11 10:30] – создано | projects:linux:manual_backup_scripts:create_img_sd_usb [2025/04/11 10:32] (текущий) – | ||
|---|---|---|---|
| Строка 10: | Строка 10: | ||
| export LC_ALL=en_US.UTF-8 | export LC_ALL=en_US.UTF-8 | ||
| # ==DIS/ | # ==DIS/ | ||
| - | # === Create Img === | + | # === Create Img from selected device |
| - | # 04_create_image.sh — создание ограниченного образа текущей системы Raspberry Pi | + | # 04.2_create_image.sh — создание образа выбранного |
| - | # с отключением журналов для минимизации записей на SD карту | + | |
| - | # | + | echo "снятие |
| + | echo " | ||
| set -euo pipefail | set -euo pipefail | ||
| + | |||
| + | # --- Выбор устройства-источника --- | ||
| + | echo "📦 Доступные устройства-источники для создания образа:" | ||
| + | mapfile -t SOURCE_DEVS < <(lsblk -dnrpo NAME, | ||
| + | if [[ ${# | ||
| + | echo "❌ Не найдено подходящих устройств." | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | i=1 | ||
| + | for dev in " | ||
| + | echo "$i - $dev" | ||
| + | ((i++)) | ||
| + | done | ||
| + | |||
| + | echo "0 - ❌ Отмена" | ||
| + | read -rp "👉 Выберите устройство-источник: | ||
| + | |||
| + | if ! [[ " | ||
| + | echo "❎ Отменено или неверный ввод." | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | SRC_LINE=" | ||
| + | SRC_DEV=$(echo " | ||
| + | SRC_SIZE=$(echo " | ||
| # --- Поиск целевых устройств (включая NAS) --- | # --- Поиск целевых устройств (включая NAS) --- | ||
| Строка 53: | Строка 80: | ||
| IFS=":" | IFS=":" | ||
| - | # Проверка на USB (влияние на сеть) | + | # Проверка на USB |
| DEV_BUS=$(udevadm info -q property -n " | DEV_BUS=$(udevadm info -q property -n " | ||
| DEV_USB_DRIVER=$(udevadm info -q property -n " | DEV_USB_DRIVER=$(udevadm info -q property -n " | ||
| if [[ " | if [[ " | ||
| echo " | echo " | ||
| - | echo " | + | echo " |
| - | echo " | + | |
| echo "" | echo "" | ||
| fi | fi | ||
| Строка 134: | Строка 160: | ||
| fi | fi | ||
| - | # --- Остановка сервисов | + | # --- Снятие |
| - | echo " | + | echo " |
| - | SERVICES=(" | + | |
| - | for svc in " | + | |
| - | if systemctl is-active --quiet " | + | |
| - | echo " | + | |
| - | sudo systemctl stop " | + | |
| - | fi | + | |
| - | done | + | |
| sync | sync | ||
| - | sudo sysctl -w vm.drop_caches=3 >/ | + | sudo dd if="$SRC_DEV" of=" |
| - | + | ||
| - | # --- Расчёт объёма --- | + | |
| - | echo "[*] Определение размера / | + | |
| - | END_SECTOR=$(sudo fdisk -l / | + | |
| - | SECTOR_SIZE=$(sudo blockdev --getss / | + | |
| - | TOTAL_BYTES=$(( (END_SECTOR + 1) * SECTOR_SIZE )) | + | |
| - | TOTAL_MB=$(( (TOTAL_BYTES + 1024*1024 - 1) / (1024*1024) + 16 )) | + | |
| - | + | ||
| - | # --- Снятие образа --- | + | |
| - | echo "[*] Снимаю образ: $FINAL_IMG ($TOTAL_MB МБ)..." | + | |
| - | sudo dd if=/ | + | |
| sync | sync | ||
| Строка 170: | Строка 178: | ||
| sudo umount " | sudo umount " | ||
| fi | fi | ||
| - | |||
| - | # --- Восстановление сервисов --- | ||
| - | echo "[*] Восстановление остановленных сервисов..." | ||
| - | for svc in " | ||
| - | echo " | ||
| - | sudo systemctl start " | ||
| - | done | ||
| exit 0 | exit 0 | ||
| - | |||
| </ | </ | ||
projects/linux/manual_backup_scripts/create_img_sd_usb.1744356612.txt.gz · Последнее изменение: —
