Initial Commit

This commit is contained in:
2026-09-06 22:39:57 +03:30
commit 2840752575
3 changed files with 216 additions and 0 deletions
Executable
+74
View File
@@ -0,0 +1,74 @@
#!/usr/bin/env bash
set -euo pipefail
# Script directory and backups directory setup
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKUP_DIR="${SCRIPT_DIR}/backups"
mkdir -p "${BACKUP_DIR}"
# Timestamp for archive name
TIMESTAMP="$(date +"%Y%m%d_%H%M%S")"
ZIP_FILENAME="konsole_backup_${TIMESTAMP}.zip"
ZIP_FILEPATH="${BACKUP_DIR}/${ZIP_FILENAME}"
# Temporary staging directory
TEMP_DIR="$(mktemp -d)"
trap 'rm -rf "${TEMP_DIR}"' EXIT
echo "=== Starting Konsole Configuration Backup ==="
# Define target paths relative to HOME
CONFIG_PATHS=(
".config/konsolerc"
".local/share/konsole"
".local/share/kxmlgui5/konsole"
".config/konsole.notifyrc"
".config/konsolesshconfig"
)
COPIED_COUNT=0
for rel_path in "${CONFIG_PATHS[@]}"; do
src_path="${HOME}/${rel_path}"
dest_path="${TEMP_DIR}/${rel_path}"
if [ -e "${src_path}" ]; then
mkdir -p "$(dirname "${dest_path}")"
cp -a "${src_path}" "${dest_path}"
echo " [+] Staged: ~/${rel_path}"
COPIED_COUNT=$((COPIED_COUNT + 1))
else
echo " [-] Skipped (not found): ~/${rel_path}"
fi
done
if [ "${COPIED_COUNT}" -eq 0 ]; then
echo "Error: No Konsole configuration files found to backup."
exit 1
fi
# Create zip file from staging area
echo "Creating backup archive: ${ZIP_FILENAME}..."
(
cd "${TEMP_DIR}"
zip -q -r "${ZIP_FILEPATH}" .
)
echo "Backup successfully saved to: ${ZIP_FILEPATH}"
# Retention Policy: keep at most 10 recent backup zip files
MAX_BACKUPS=10
mapfile -t BACKUP_FILES < <(find "${BACKUP_DIR}" -maxdepth 1 -name "konsole_backup_*.zip" | sort -r)
TOTAL_BACKUPS="${#BACKUP_FILES[@]}"
if [ "${TOTAL_BACKUPS}" -gt "${MAX_BACKUPS}" ]; then
echo "Cleaning up older backups (keeping top ${MAX_BACKUPS})..."
for (( i=MAX_BACKUPS; i<TOTAL_BACKUPS; i++ )); do
file_to_remove="${BACKUP_FILES[$i]}"
echo " Deleting old backup: $(basename "${file_to_remove}")"
rm -f "${file_to_remove}"
done
fi
echo "=== Backup Complete (${TOTAL_BACKUPS} backup(s) currently stored) ==="