#!/bin/bash # This script assumes that start.sh has already cloned the repo and set up SSH. # --- Paths --- # The git repo is cloned into /tmp/repo by start.sh GIT_REPO_DIR="/tmp/repo" LOG_FILE="/tmp/sync.log" # Live files to be backed up XUI_DB_PATH="/tmp/x-ui.db" XRAY_CONFIG_PATH="/usr/local/x-ui/bin/config.json" # Destination for the backed up files inside the git repo TARGET_DIR="${GIT_REPO_DIR}/x-ui-configs" # Git commit message COMMIT_MESSAGE="Automatic sync of x-ui configs" # --- Functions --- log() { echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" } # --- Main --- log "--- Starting Hourly Sync ---" # Navigate to the Git repository if [ ! -d "$GIT_REPO_DIR/.git" ]; then log "Error: Git repository not found at $GIT_REPO_DIR. Exiting sync." exit 1 fi cd "$GIT_REPO_DIR" || exit 1 # Configure git user for this operation git config user.email "igor04091968@gmail.com" git config user.name "igor04091968" # Pull latest changes first to avoid conflicts log "Pulling latest changes from remote..." git pull --rebase # Ensure the target directory for configs exists mkdir -p "$TARGET_DIR" # Copy live files into the git repo log "Copying live db from ${XUI_DB_PATH} and config from ${XRAY_CONFIG_PATH} into git repo..." cp -f "${XUI_DB_PATH}" "${TARGET_DIR}/x-ui.db" cp -f "${XRAY_CONFIG_PATH}" "${TARGET_DIR}/config.json" # Add, commit, and push log "Adding changes to git..." git add "$TARGET_DIR/x-ui.db" "$TARGET_DIR/config.json" # Commit only if there are changes if ! git diff-index --quiet HEAD; then log "Found changes, committing..." git commit -m "$COMMIT_MESSAGE" log "Committed changes." log "Pushing changes to remote..." if git push; then log "Successfully pushed changes to the remote repository." else log "Error: Failed to push changes." fi else log "No changes to commit." fi log "--- Hourly Sync Finished ---"