Neue Datei hochladen

This commit is contained in:
Hans-Chritian Payer
2026-04-28 08:38:11 +00:00
parent 379e1bae7b
commit 64400834a6
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
set -Eeuo pipefail
SRC="${HOME}/"
DEST_BASE="/run/media/hans/usbsicherung/jacboy_sicherung"
HOST="$(hostname -s)"
STAMP="$(date +%F_%H-%M-%S)"
SNAPSHOT_DIR="${DEST_BASE}/${HOST}/${STAMP}"
LAST_LINK="${DEST_BASE}/${HOST}/latest"
LOG_DIR="${DEST_BASE}/${HOST}/logs"
LOG_FILE="${LOG_DIR}/backup-${STAMP}.log"
KEEP=30
mkdir -p "${SNAPSHOT_DIR}" "${LOG_DIR}"
RSYNC_OPTS=(
-aHAXx
--numeric-ids
--delete
--delete-excluded
--info=stats2,progress2
--human-readable
--partial
)
EXCLUDES=(
--exclude=".cache/"
--exclude="Downloads/"
--exclude=".local/share/Trash/"
--exclude=".gvfs/"
--exclude=".dotnet/"
--exclude=".codegpt/"
--exclude=".copilot/"
--exclude=".var/"
--exclude=".vscode/"
--exclude="temp/"
)
if [ -L "${LAST_LINK}" ] && [ -d "$(readlink -f "${LAST_LINK}")" ]; then
RSYNC_OPTS+=(--link-dest="$(readlink -f "${LAST_LINK}")")
fi
rsync "${RSYNC_OPTS[@]}" \
"${EXCLUDES[@]}" \
"${SRC}" "${SNAPSHOT_DIR}/" | tee "${LOG_FILE}"
ln -sfn "${SNAPSHOT_DIR}" "${LAST_LINK}"
cd "${DEST_BASE}/${HOST}"
ls -1dt 20* | tail -n +$((KEEP + 1)) | xargs -r rm -rf