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.txt · Последнее изменение: 2025/04/11 10:32 —