Neue Datei hochladen
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user