auto backup and send via telegram

This commit is contained in:
Parsa Nazer
2025-02-24 23:08:36 +03:30
parent 7531302b49
commit 0180f528e2
4 changed files with 55 additions and 2 deletions
+30
View File
@@ -0,0 +1,30 @@
#!/bin/sh
echo 'started the backup'
# Telegram API URL
TELEGRAM_API="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendDocument"
# Generate timestamp
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${TIMESTAMP}.sql"
ZIP_FILE="backup_${TIMESTAMP}.zip"
# Create backup
pg_dump -h $PG_HOST -p $PG_PORT -U $PG_USER -d $PG_DATABASE > /backups/$BACKUP_FILE
# Check if backup succeeded
if [ $? -ne 0 ]; then
echo "Backup failed!"
exit 1
fi
# Zip the backup
zip -j /backups/$ZIP_FILE /backups/$BACKUP_FILE
# Send to Telegram
curl -F chat_id=$TELEGRAM_CHAT_ID \
-F document=@/backups/$ZIP_FILE \
$TELEGRAM_API
# Cleanup (keep last 3 backups)
ls -t /backups/*.zip | tail -n +4 | xargs rm -f
ls -t /backups/*.sql | tail -n +4 | xargs rm -f
+1
View File
@@ -0,0 +1 @@
* * * * * /app/backup.sh
+6
View File
@@ -0,0 +1,6 @@
FROM alpine:3.19
RUN apk add --no-cache postgresql-client curl zip tzdata
WORKDIR /app
COPY backup.sh .
RUN chmod +x backup.sh
CMD ["/app/backup.sh"]
+18 -2
View File
@@ -42,11 +42,27 @@ services:
networks:
- default
db-backup:
build:
context: ./backup
depends_on:
- db
environment:
- PG_HOST=db
- PG_PORT=5432
- PG_DATABASE=hshop
- PG_USER=byeto
- PG_PASSWORD=vuhbyq-cypMu0-sirbon
- TELEGRAM_BOT_TOKEN='7068288679:AAGecMnyt9A6R78OQu8nQeISMK1LepX718g'
- TELEGRAM_CHAT_ID=1198382521
volumes:
- backups:/backups
networks:
- default
volumes:
postgres_data:
media_data:
backups:
networks:
default: