41 lines
930 B
Bash
Executable File
41 lines
930 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
tasks=(
|
|
"misskey"
|
|
)
|
|
export basedir="/backup"
|
|
|
|
export AWS_ACCESS_KEY_ID="<YOUR-OSS-ACCESS-KEY-ID>"
|
|
export AWS_SECRET_ACCESS_KEY="<YOUR-OSS-SECRET-ACCESS-KEY>"
|
|
export AWS_DEFAULT_REGION="cn-shanghai"
|
|
export RESTIC_REPOSITORY="s3:https://oss-cn-shanghai-internal.aliyuncs.com/backup"
|
|
export RESTIC_PASSWORD="xxxxxxxxxxxxx"
|
|
|
|
LOG_DIR="$basedir/log"
|
|
WORK_DIR="$basedir/work"
|
|
LOCK_DIR="$basedir/lock"
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
|
|
}
|
|
|
|
main() {
|
|
mkdir -p "$LOG_DIR" "$WORK_DIR" "$LOCK_DIR"
|
|
|
|
for task in "${tasks[@]}"; do
|
|
script_file="$basedir/$task/task.sh"
|
|
log_file="$LOG_DIR/$task.log"
|
|
|
|
if [ -x "$script_file" ]; then
|
|
log "Running $task..."
|
|
# TODO: 备份失败时推送通知
|
|
flock -n "$LOCK_DIR/$task.lock" "$script_file" >> "$log_file" 2>&1
|
|
log "Finished $task"
|
|
else
|
|
echo "Skipping $task: not executable or not found"
|
|
fi
|
|
done
|
|
}
|
|
|
|
main
|