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"