52 lines
1.2 KiB
Bash
Executable File
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"
|