chat / sync_webuidb.sh
wynai's picture
Upload 2 files
1d6e453 verified
#!/bin/bash
if [ -z "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
echo "Missing G_NAME or G_TOKEN"
exit 1
fi
IFS='/' read -r GITHUB_USER GITHUB_REPO <<< "$G_NAME"
REPO_URL="https://${G_TOKEN}@github.com/${G_NAME}.git"
mkdir -p ./data/github_data
echo "Cloning repo..."
git clone "$REPO_URL" ./data/github_data || {
echo "Clone failed"
exit 1
}
if [ -f ./data/github_data/webui.db ]; then
cp ./data/github_data/webui.db ./data/webui.db
echo "Pulled webui.db from GitHub"
fi
do_sync() {
CURRENT_TIME=$(TZ=Asia/Ho_Chi_Minh date '+%Y-%m-%d %H:%M:%S')
echo "Running sync at $CURRENT_TIME"
cd ./data/github_data || exit 1
git config user.name "AutoSync Bot"
git config user.email "[email protected]"
git checkout main 2>/dev/null || git checkout master
if [ -f "../webui.db" ]; then
cp ../webui.db ./webui.db
fi
if [[ -n $(git status -s) ]]; then
git add webui.db
git commit -m "Auto sync $(TZ=Asia/Ho_Chi_Minh date '+%Y-%m-%d %H:%M:%S')"
git push origin HEAD || {
echo "GitHub push failed, retrying..."
sleep 10
git push origin HEAD || echo "Push failed again"
}
else
echo "No changes to commit"
fi
cd ../..
if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then
FILENAME="webui_$(TZ=Asia/Ho_Chi_Minh date +'%m_%d').db"
if [ -f ./data/webui.db ]; then
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
echo "WebDAV upload failed, retrying..."
sleep 10
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || echo "Upload failed again"
}
fi
fi
}
while true; do
do_sync
sleep 60
done