# Backup KDE Settings You are helping the user export and backup their KDE Plasma configuration settings. ## Task 1. **Identify KDE configuration locations:** ```bash # Main config directory echo "KDE Config: ~/.config/" # Local data directory echo "KDE Data: ~/.local/share/" # Cache directory echo "KDE Cache: ~/.cache/" ``` 2. **List important KDE configuration files:** ```bash # Core KDE files ls -lh ~/.config/k* ~/.config/plasma* ~/.config/*rc 2>/dev/null | head -30 # Desktop files ls -lh ~/.local/share/plasma* ~/.local/share/k* 2>/dev/null | head -20 ``` 3. **Create backup directory:** ```bash # Create timestamped backup directory BACKUP_DIR=~/.kde-backups/kde-backup-$(date +%Y%m%d-%H%M%S) mkdir -p "$BACKUP_DIR" echo "Backup directory: $BACKUP_DIR" ``` 4. **Backup essential KDE configurations:** ```bash # Core Plasma configuration cp -r ~/.config/plasma* "$BACKUP_DIR/" 2>/dev/null cp -r ~/.config/k* "$BACKUP_DIR/" 2>/dev/null # Application-specific configs for config in kdeglobals kwinrc dolphinrc konsolerc katerc spectaclerc; do [ -f ~/.config/$config ] && cp ~/.config/$config "$BACKUP_DIR/" done # Desktop theme and appearance cp ~/.config/plasmarc "$BACKUP_DIR/" 2>/dev/null cp ~/.config/plasmashellrc "$BACKUP_DIR/" 2>/dev/null # Keyboard shortcuts cp ~/.config/kglobalshortcutsrc "$BACKUP_DIR/" 2>/dev/null cp ~/.config/khotkeysrc "$BACKUP_DIR/" 2>/dev/null ``` 5. **Backup KDE desktop layouts:** ```bash # Plasma layouts cp -r ~/.local/share/plasma "$BACKUP_DIR/plasma-data" 2>/dev/null # Desktop scripts cp -r ~/.local/share/kservices5 "$BACKUP_DIR/kservices" 2>/dev/null # Plasmoids and widgets cp -r ~/.local/share/plasmashell "$BACKUP_DIR/plasmashell-data" 2>/dev/null ``` 6. **Backup application data:** ```bash # Dolphin bookmarks and settings cp -r ~/.local/share/dolphin "$BACKUP_DIR/dolphin-data" 2>/dev/null # Konsole profiles cp -r ~/.local/share/konsole "$BACKUP_DIR/konsole-data" 2>/dev/null # KWallet (encrypted passwords) cp -r ~/.local/share/kwalletd "$BACKUP_DIR/kwallet-data" 2>/dev/null # Akonadi (if using KMail/contacts) # cp -r ~/.local/share/akonadi "$BACKUP_DIR/akonadi-data" 2>/dev/null ``` 7. **Backup color schemes and themes:** ```bash # Color schemes cp -r ~/.local/share/color-schemes "$BACKUP_DIR/" 2>/dev/null # Plasma themes cp -r ~/.local/share/plasma/desktoptheme "$BACKUP_DIR/" 2>/dev/null # Icon themes cp -r ~/.local/share/icons "$BACKUP_DIR/" 2>/dev/null # Window decorations cp -r ~/.local/share/aurorae "$BACKUP_DIR/" 2>/dev/null ``` 8. **Create backup manifest:** ```bash cat > "$BACKUP_DIR/BACKUP_INFO.txt" << EOF KDE Plasma Backup ================= Date: $(date) Hostname: $(hostname) KDE Version: $(plasmashell --version) Qt Version: $(qmake --version | grep -i "Qt version") Backup Contents: ---------------- $(find "$BACKUP_DIR" -type f | wc -l) files backed up $(du -sh "$BACKUP_DIR" | cut -f1) total size Configuration Files: $(ls -1 "$BACKUP_DIR"/*.rc "$BACKUP_DIR"/*config* 2>/dev/null | wc -l) config files Important Files: $(ls -lh "$BACKUP_DIR" | grep -E "plasma|kwin|dolphin|konsole|kdeglobals") EOF cat "$BACKUP_DIR/BACKUP_INFO.txt" ``` 9. **Compress backup:** ```bash # Create compressed archive cd ~/.kde-backups tar czf "$(basename "$BACKUP_DIR").tar.gz" "$(basename "$BACKUP_DIR")" # Show results ls -lh "$(basename "$BACKUP_DIR").tar.gz" echo "Backup archived: ~/.kde-backups/$(basename "$BACKUP_DIR").tar.gz" ``` 10. **Optional: Sync to cloud or external storage:** ```bash # Ask user if they want to copy backup elsewhere # Example: Copy to NAS # scp "$(basename "$BACKUP_DIR").tar.gz" user@nas:/backups/kde/ # Example: Copy to external drive # cp "$(basename "$BACKUP_DIR").tar.gz" /mnt/external/kde-backups/ ``` ## Restoration Instructions Create a restoration guide in the backup: ```bash cat > "$BACKUP_DIR/RESTORE.md" << 'EOF' # KDE Backup Restoration ## To restore this backup: 1. **Extract the archive:** ```bash cd ~/.kde-backups tar xzf kde-backup-TIMESTAMP.tar.gz ``` 2. **Close all KDE applications** (important!) 3. **Restore configuration files:** ```bash cd kde-backup-TIMESTAMP cp -r k* plasma* *.rc ~/.config/ ``` 4. **Restore data files:** ```bash cp -r plasma-data ~/.local/share/plasma cp -r dolphin-data ~/.local/share/dolphin cp -r konsole-data ~/.local/share/konsole ``` 5. **Restart Plasma:** ```bash kquitapp6 plasmashell && kstart plasmashell ``` Or log out and back in. ## Selective Restoration To restore only specific components: - Shortcuts: `cp kglobalshortcutsrc ~/.config/` - Theme: `cp plasmarc ~/.config/` - Panel/Desktop: `cp -r plasma-data ~/.local/share/plasma` - Dolphin: `cp -r dolphin-data ~/.local/share/dolphin` EOF ``` ## Minimal vs Complete Backup **Minimal backup** (most important settings): ```bash # Just essential configs tar czf ~/.kde-backups/kde-minimal-backup.tar.gz \ ~/.config/kdeglobals \ ~/.config/kwinrc \ ~/.config/plasmarc \ ~/.config/kglobalshortcutsrc \ ~/.local/share/plasma ``` **Complete backup** (everything): ```bash # All KDE data tar czf ~/.kde-backups/kde-complete-backup.tar.gz \ ~/.config/k* \ ~/.config/plasma* \ ~/.local/share/plasma* \ ~/.local/share/k* \ --exclude="*.lock" \ --exclude="*cache*" ``` ## Scheduled Backups Create a cron job for automatic backups: ```bash # Add to crontab (crontab -l 2>/dev/null; echo "0 2 * * 0 $HOME/.local/bin/backup-kde.sh") | crontab - # Create backup script cat > ~/.local/bin/backup-kde.sh << 'EOF' #!/bin/bash BACKUP_DIR=~/.kde-backups/kde-backup-$(date +%Y%m%d) mkdir -p "$BACKUP_DIR" cp -r ~/.config/{k*,plasma*} "$BACKUP_DIR/" 2>/dev/null cp -r ~/.local/share/plasma "$BACKUP_DIR/" 2>/dev/null tar czf "$BACKUP_DIR.tar.gz" "$BACKUP_DIR" rm -rf "$BACKUP_DIR" # Keep only last 4 backups cd ~/.kde-backups && ls -t | tail -n +5 | xargs rm -f EOF chmod +x ~/.local/bin/backup-kde.sh ``` ## Notes - KDE 5 uses `kf5` directory structure, KDE 6 uses `kf6` - Plasma 6 may have different config locations - Don't backup cache files (*.lock, cache directories) - KWallet passwords require the same user password to decrypt - Some configs are machine-specific (display settings) - Consider using Konsave (KDE settings manager) for easy backups - Large data folders (Akonadi, Baloo index) can be skipped for config backups