#!/usr/bin/env bash # Quick backup of important dotfiles set -euo pipefail DOTFILES_DIR="$HOME/dotfiles" BACKUP_DIR="$DOTFILES_DIR/backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo -e "${GREEN}Backing up dotfiles...${NC}" # Create backup directory mkdir -p "$BACKUP_DIR" # Files to backup files=( "$HOME/.zshrc" "$HOME/.gitconfig" "$HOME/.vimrc" "$HOME/.ssh/config" "$HOME/.config/karabiner/karabiner.json" ) # Create tarball tar_file="$BACKUP_DIR/dotfiles_backup_${TIMESTAMP}.tar.gz" for file in "${files[@]}"; do if [ -f "$file" ]; then echo -e "${YELLOW}Adding: $file${NC}" fi done tar -czf "$tar_file" \ --exclude="*.log" \ --exclude=".git" \ "${files[@]}" 2>/dev/null || true echo -e "${GREEN}Backup created: $tar_file${NC}" # Keep only last 10 backups cd "$BACKUP_DIR" ls -t dotfiles_backup_*.tar.gz | tail -n +11 | xargs -r rm echo -e "${GREEN}Done!${NC}"