From b268583420bf9dc4d11e92b48573f91974924e27 Mon Sep 17 00:00:00 2001 From: mustafa_98 Date: Fri, 16 Jan 2026 23:05:20 +0000 Subject: [PATCH] =?UTF-8?q?=D8=AD=D8=B0=D9=81=20pg=5Fs3=5Fmigrator.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pg_s3_migrator.py | 59 ----------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 pg_s3_migrator.py diff --git a/pg_s3_migrator.py b/pg_s3_migrator.py deleted file mode 100644 index fb8276a..0000000 --- a/pg_s3_migrator.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -import os -import subprocess -import boto3 -import json -from datetime import datetime - -PROGRESS_FILE = "psql_progress.json" - -def update_progress(status, message, percent=0): - with open(PROGRESS_FILE, "w") as f: - json.dump({"status": status, "message": message, "percent": percent}, f) - -def backup_pg_to_s3(): - # جلب متغيرات البيئة - DB_HOST = os.getenv("DB_HOST", "localhost") - DB_NAME = os.getenv("DB_NAME") - DB_USER = os.getenv("DB_USER") - DB_PASS = os.getenv("DB_PASS") - - S3_BUCKET = os.getenv("DEST_BUCKET") - S3_ENDPOINT = os.getenv("DEST_ENDPOINT") - S3_ACCESS = os.getenv("DEST_ACCESS") - S3_SECRET = os.getenv("DEST_SECRET") - - filename = f"backup_{DB_NAME}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.sql.gz" - - update_progress("running", f"جاري بدء النسخ الاحتياطي لقاعدة {DB_NAME}...", 10) - - # إعداد S3 Client - s3 = boto3.client("s3", - aws_access_key_id=S3_ACCESS, - aws_secret_access_key=S3_SECRET, - endpoint_url=S3_ENDPOINT - ) - - # أمر pg_dump مع الضغط - os.environ['PGPASSWORD'] = DB_PASS - dump_cmd = f"pg_dump -h {DB_HOST} -U {DB_USER} {DB_NAME} | gzip" - - try: - process = subprocess.Popen(dump_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - - update_progress("running", "جاري رفع الملف إلى S3 مباشرة...", 50) - - s3.upload_fileobj(process.stdout, S3_BUCKET, filename) - - process.stdout.close() - process.wait() - - if process.returncode == 0: - update_progress("completed", f"تم رفع النسخة الاحتياطية {filename} إلى S3 بنجاح ✅", 100) - else: - update_progress("error", f"خطأ في pg_dump: {process.stderr.read().decode()}", 0) - except Exception as e: - update_progress("error", str(e), 0) - -if __name__ == "__main__": - backup_pg_to_s3() \ No newline at end of file