auto backup and send via telegram
This commit is contained in:
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
* * * * * /app/backup.sh
|
||||||
@@ -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
@@ -42,11 +42,27 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- default
|
- 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:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
media_data:
|
media_data:
|
||||||
|
backups:
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
Reference in New Issue
Block a user