Обновить vaultwarden/backuper.sh

This commit is contained in:
2026-04-15 18:00:04 +00:00
parent c19d48a553
commit 267309341d

View File

@@ -1,54 +1,13 @@
#!/bin/bash #!/bin/bash
set -e set -e
# Значения по умолчанию
MODE="host" # host или docker
REQUIRED_CMDS=(curl tar date) REQUIRED_CMDS=(curl tar date)
PKGS_MISSING=() 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 while [[ $# -gt 0 ]]; do
case "$1" in case "$1" in
--token) --token)
@@ -59,6 +18,10 @@ while [[ $# -gt 0 ]]; do
USER_ID="$2" USER_ID="$2"
shift 2 shift 2
;; ;;
--mode)
MODE="$2"
shift 2
;;
*) *)
echo "Unknown option: $1" echo "Unknown option: $1"
exit 1 exit 1
@@ -67,10 +30,52 @@ while [[ $# -gt 0 ]]; do
done done
if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then
echo "Usage: $0 --token <TOKEN> --user_id <user_id>" echo "Usage: $0 --token <TOKEN> --user_id <user_id> [--mode host|docker]"
exit 1 exit 1
fi 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 / # 1. cd /
cd / cd /