From 267309341d2dbf8a053f3ee025a03c10aa25b4d5 Mon Sep 17 00:00:00 2001 From: CREATIVE_tg1 Date: Wed, 15 Apr 2026 18:00:04 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20vaultwarden/backuper.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vaultwarden/backuper.sh | 97 ++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 46 deletions(-) diff --git a/vaultwarden/backuper.sh b/vaultwarden/backuper.sh index 29144d3..c5d3fc6 100644 --- a/vaultwarden/backuper.sh +++ b/vaultwarden/backuper.sh @@ -1,54 +1,13 @@ #!/bin/bash set -e +# Значения по умолчанию +MODE="host" # host или docker + REQUIRED_CMDS=(curl tar date) PKGS_MISSING=() -# Проверка наличия команд -for cmd in "${REQUIRED_CMDS[@]}"; do - if ! command -v "$cmd" >/dev/null 2>&1; then - PKGS_MISSING+=("$cmd") - fi -done - -install_packages() { - PKGS=("$@") - # Для Alpine - if command -v apk >/dev/null 2>&1; then - apk add --no-cache "${PKGS[@]}" - # Для Debian/Ubuntu - elif command -v apt-get >/dev/null 2>&1; then - apt-get update && apt-get install -y "${PKGS[@]}" - # Для Fedora - elif command -v dnf >/dev/null 2>&1; then - dnf install -y "${PKGS[@]}" - # Для CentOS/RHEL - elif command -v yum >/dev/null 2>&1; then - yum install -y "${PKGS[@]}" - # Для openSUSE - elif command -v zypper >/dev/null 2>&1; then - zypper install -y "${PKGS[@]}" - # Для Arch - elif command -v pacman >/dev/null 2>&1; then - pacman -Sy --noconfirm "${PKGS[@]}" - else - echo "Не удалось определить пакетный менеджер для установки: ${PKGS[*]}" - exit 1 - fi -} - -if [[ ${#PKGS_MISSING[@]} -gt 0 ]]; then - if [[ "$EUID" -ne 0 ]]; then - echo "Зависимости отсутствуют: ${PKGS_MISSING[*]}" - echo "Запустите скрипт от root для автоустановки!" - exit 1 - fi - echo "Необходимые пакеты отсутствуют: ${PKGS_MISSING[*]}" - echo "Пробую установить..." - install_packages "${PKGS_MISSING[@]}" -fi - -# ПАРСИНГ ПАРАМЕТРОВ +# Парсинг параметров while [[ $# -gt 0 ]]; do case "$1" in --token) @@ -59,6 +18,10 @@ while [[ $# -gt 0 ]]; do USER_ID="$2" shift 2 ;; + --mode) + MODE="$2" + shift 2 + ;; *) echo "Unknown option: $1" exit 1 @@ -67,10 +30,52 @@ while [[ $# -gt 0 ]]; do done if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then - echo "Usage: $0 --token --user_id " + echo "Usage: $0 --token --user_id [--mode host|docker]" exit 1 fi +# Проверка наличия зависимостей +for cmd in "${REQUIRED_CMDS[@]}"; do + if ! command -v "$cmd" >/dev/null 2>&1; then + PKGS_MISSING+=("$cmd") + fi +done + +install_packages() { + local PKGS=("$@") + if command -v apk >/dev/null 2>&1; then + apk add --no-cache "${PKGS[@]}" + elif command -v apt-get >/dev/null 2>&1; then + apt-get update && apt-get install -y "${PKGS[@]}" + elif command -v dnf >/dev/null 2>&1; then + dnf install -y "${PKGS[@]}" + elif command -v yum >/dev/null 2>&1; then + yum install -y "${PKGS[@]}" + elif command -v zypper >/dev/null 2>&1; then + zypper install -y "${PKGS[@]}" + elif command -v pacman >/dev/null 2>&1; then + pacman -Sy --noconfirm "${PKGS[@]}" + else + echo "Не удалось определить пакетный менеджер для установки: ${PKGS[*]}" + exit 1 + fi +} + +if [[ ${#PKGS_MISSING[@]} -gt 0 ]]; then + echo "Необходимые пакеты отсутствуют: ${PKGS_MISSING[*]}" + if [[ "$MODE" == "docker" ]]; then + echo "Режим работы: docker (root ожидается, sudo не используется)" + install_packages "${PKGS_MISSING[@]}" + else + # HOST + if [[ "$EUID" -ne 0 ]]; then + echo "Запустите скрипт с правами root (или через sudo), чтобы автоматически установить зависимости." + exit 1 + fi + install_packages "${PKGS_MISSING[@]}" + fi +fi + # 1. cd / cd /