From ff7bb9775dfef91a35ca2cdbd0c25bff2ca692b8 Mon Sep 17 00:00:00 2001 From: CREATIVE_tg1 Date: Wed, 15 Apr 2026 17:53:04 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=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 | 105 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 vaultwarden/backuper.sh diff --git a/vaultwarden/backuper.sh b/vaultwarden/backuper.sh new file mode 100644 index 0000000..29144d3 --- /dev/null +++ b/vaultwarden/backuper.sh @@ -0,0 +1,105 @@ +#!/bin/bash +set -e + +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) + TOKEN="$2" + shift 2 + ;; + --user_id) + USER_ID="$2" + shift 2 + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + +if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then + echo "Usage: $0 --token --user_id " + exit 1 +fi + +# 1. cd / +cd / + +# 2. vaultwarden backup +if ! /vaultwarden backup; then + echo "vaultwarden backup failed" + exit 1 +fi + +# 3. create archive /data +NOW=$(date '+%Y-%m-%d_%H-%M-%S') +ARCHIVE="/tmp/vaultwarden_backup_${NOW}.tar.gz" + +tar -czf "$ARCHIVE" /data + +# 4. send archive user in telegram +response=$(curl -s -F chat_id="$USER_ID" \ + -F document=@"$ARCHIVE" \ + "https://api.telegram.org/bot${TOKEN}/sendDocument") + +if ! echo "$response" | grep -q '"ok":true'; then + echo "Failed to send archive to telegram: $response" + exit 1 +fi + +# 5. rm archive +rm -f "$ARCHIVE" + +# 6. rm /data/db_* +rm -f /data/db_* + +echo "Backup and send complete." \ No newline at end of file