netgescon-day0/scripts/ops/netgescon-data-backup-incremental-gdrive.sh

52 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Incremental backup of data files to Google Drive using rclone.
# Copies only new/changed files and never deletes remote files.
#
# Usage:
# scripts/ops/netgescon-data-backup-incremental-gdrive.sh \
# --source /var/www/netgescon/storage/app/amministratori \
# --remote gdrive:NetGesconBackups/prod/data-incremental
SOURCE_DIR="/var/www/netgescon/storage/app/amministratori"
REMOTE_PATH="gdrive:NetGesconBackups/prod/data-incremental"
while [[ $# -gt 0 ]]; do
case "$1" in
--source)
SOURCE_DIR="$2"
shift 2
;;
--remote)
REMOTE_PATH="$2"
shift 2
;;
*)
echo "Unknown option: $1"
echo "Usage: $0 [--source <dir>] [--remote <rclone-remote:path>]"
exit 1
;;
esac
done
if ! command -v rclone >/dev/null 2>&1; then
echo "Error: rclone not installed."
exit 1
fi
if [[ ! -d "$SOURCE_DIR" ]]; then
echo "Error: source directory not found: $SOURCE_DIR"
exit 1
fi
rclone copy "$SOURCE_DIR" "$REMOTE_PATH" \
--update \
--checksum \
--create-empty-src-dirs \
--progress
echo "Incremental data backup completed."
echo "SOURCE=$SOURCE_DIR"
echo "REMOTE=$REMOTE_PATH"