From c594dd7d10d58df9caf1972b924722d36cd591f1 Mon Sep 17 00:00:00 2001 From: retrilzzy Date: Mon, 20 Oct 2025 20:33:52 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D1=8B=20=D0=B1?= =?UTF-8?q?=D1=8D=D0=BA=D0=B0=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Scripts/backup.sh | 17 +++++++++++------ Scripts/full-backup.sh | 17 ++++++++++------- Scripts/restore.sh | 23 +++++++++++++++-------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/Scripts/backup.sh b/Scripts/backup.sh index fdf92c7..ddeca3f 100755 --- a/Scripts/backup.sh +++ b/Scripts/backup.sh @@ -1,9 +1,10 @@ -#!/bin/env bash +#!/bin/bash + +set -euo pipefail DOTFILES_DIR="$HOME/dotfiles" - DATE=$(date +%Y-%m-%d_%H-%M-%S) -BACKUP_DIR=~/.config-backups/"$DATE" +BACKUP_DIR="$HOME/.config-backups/$DATE" backup_configs() { echo "📦 Создание резервной копии текущих конфигураций..." @@ -13,12 +14,16 @@ backup_configs() { for dir in "$DOTFILES_DIR"/Configs/.config/*; do name=$(basename "$dir") - if [ -d ~/.config/"$name" ]; then - cp -r "$HOME"/.config/"$name" "$BACKUP_DIR/.config/" + if [[ -d "$HOME/.config/$name" ]]; then + cp -r "$HOME/.config/$name" "$BACKUP_DIR/.config/" fi done - cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" 2>/dev/null || true + for file in .zshrc .p10k.zsh .nanorc; do + if [[ -f "$HOME/$file" ]]; then + cp "$HOME/$file" "$BACKUP_DIR/" + fi + done echo "✅ Бэкап сохранён в $BACKUP_DIR" } diff --git a/Scripts/full-backup.sh b/Scripts/full-backup.sh index a996041..59884bc 100755 --- a/Scripts/full-backup.sh +++ b/Scripts/full-backup.sh @@ -1,23 +1,26 @@ -#!/bin/env bash +#!/bin/bash + +set -euo pipefail DATE=$(date +%Y-%m-%d_%H-%M-%S) -BACKUP_DIR=~/.config-backups/"$DATE" +BACKUP_DIR="$HOME/.config-backups/$DATE" backup_configs() { - echo "📦 Создание полной резервной копии ~/.config..." + echo "📦 Создание полной резервной копии: $HOME/.config → $BACKUP_DIR" mkdir -p "$BACKUP_DIR" if command -v rsync >/dev/null 2>&1; then - rsync -a ~/.config/ "$BACKUP_DIR/.config/" + rsync -a --delete "$HOME/.config/" "$BACKUP_DIR/.config/" else - cp -a ~/.config "$BACKUP_DIR/" + cp -a "$HOME/.config" "$BACKUP_DIR"/ fi - cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" 2>/dev/null || true + for file in .zshrc .p10k.zsh .nanorc; do + [ -f "$HOME/$file" ] && cp "$HOME/$file" "$BACKUP_DIR/" + done echo "✅ Бэкап сохранён в $BACKUP_DIR" } - backup_configs diff --git a/Scripts/restore.sh b/Scripts/restore.sh index a99dd60..0792421 100755 --- a/Scripts/restore.sh +++ b/Scripts/restore.sh @@ -1,24 +1,31 @@ -#!/bin/env bash +#!/bin/bash + +set -euo pipefail BACKUP_DIR="$HOME/.config-backups" -if [ ! -d "$BACKUP_DIR" ]; then +if [[ ! -d "$BACKUP_DIR" ]]; then echo "❌ Резервные копии не найдены: $BACKUP_DIR" exit 1 fi echo "📦 Доступные резервные копии:" -ls "$BACKUP_DIR" +ls -1 "$BACKUP_DIR" | sort read -rp "Введите имя папки для восстановления (YYYY-MM-DD_HH-MM-SS): " folder -if [ ! -d "$BACKUP_DIR/$folder" ]; then - echo "❌ Директория $folder не найдена в резервных копиях" +TARGET="$BACKUP_DIR/$folder" + +if [[ ! -d "$TARGET" ]]; then + echo "❌ Директория '$folder' не найдена в резервных копиях" exit 1 fi echo "♻️ Восстановление конфигураций..." -cp -r "$BACKUP_DIR/$folder/.config" ~/ -cp "$BACKUP_DIR/$folder"/.{zshrc,p10k.zsh,nanorc} ~/ 2>/dev/null || true -echo "✅ Конфигурации восстановлены!" +mkdir -p "$HOME/.config" + +cp -r "$TARGET/.config/." "$HOME/.config/" 2>/dev/null || true +cp "$TARGET"/.{zshrc,p10k.zsh,nanorc} "$HOME"/ 2>/dev/null || true + +echo "✅ Конфигурации успешно восстановлены из $TARGET"