\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
| Path : /var/www/html/yedekledb24/DatabaseBackupMasterv7/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv7/export_data.py |
import json
import os
from datetime import datetime
from app import app, db
from models import DatabaseConnection, StorageTarget, BackupJob, BackupLog, User, SmtpSettings
def export_to_json():
"""Veritabanındaki tüm verileri JSON formatında dışa aktarır."""
with app.app_context():
# Her bir modelin verilerini alıp JSON'a dönüştür
data = {
'database_connections': [
{
'id': conn.id,
'name': conn.name,
'db_type': conn.db_type,
'host': conn.host,
'port': conn.port,
'username': conn.username,
'password': '******', # Güvenlik nedeniyle şifreleri maskeliyoruz
'database': conn.database,
'created_at': conn.created_at.isoformat() if conn.created_at else None
}
for conn in DatabaseConnection.query.all()
],
'storage_targets': [
{
'id': storage.id,
'name': storage.name,
'storage_type': storage.storage_type,
'host': storage.host,
'port': storage.port,
'username': storage.username,
'password': '******' if storage.password else None,
'path': storage.path,
'created_at': storage.created_at.isoformat() if storage.created_at else None
}
for storage in StorageTarget.query.all()
],
'backup_jobs': [
{
'id': job.id,
'name': job.name,
'database_id': job.database_id,
'storage_id': job.storage_id,
'schedule_type': job.schedule_type,
'schedule_value': job.schedule_value,
'retention_days': job.retention_days,
'enabled': job.enabled,
'created_at': job.created_at.isoformat() if job.created_at else None,
'last_run': job.last_run.isoformat() if job.last_run else None
}
for job in BackupJob.query.all()
],
'backup_logs': [
{
'id': log.id,
'job_id': log.job_id,
'timestamp': log.timestamp.isoformat() if log.timestamp else None,
'status': log.status,
'message': log.message,
'backup_file': log.backup_file,
'backup_size': log.backup_size,
'duration': log.duration
}
for log in BackupLog.query.all()
],
'users': [
{
'id': user.id,
'username': user.username,
'email': user.email,
'is_admin': user.is_admin,
'created_at': user.created_at.isoformat() if user.created_at else None,
'last_login': user.last_login.isoformat() if user.last_login else None
}
for user in User.query.all()
],
'smtp_settings': []
}
# SMTP ayarları (varsa)
smtp_settings = SmtpSettings.query.first()
if smtp_settings:
data['smtp_settings'] = {
'id': smtp_settings.id,
'mail_server': smtp_settings.mail_server,
'mail_port': smtp_settings.mail_port,
'mail_use_tls': smtp_settings.mail_use_tls,
'mail_use_ssl': smtp_settings.mail_use_ssl,
'mail_username': smtp_settings.mail_username,
'mail_password': '******', # Güvenlik nedeniyle şifreleri maskeliyoruz
'mail_default_sender': smtp_settings.mail_default_sender,
'notification_emails': smtp_settings.notification_emails,
'created_at': smtp_settings.created_at.isoformat() if smtp_settings.created_at else None,
'updated_at': smtp_settings.updated_at.isoformat() if smtp_settings.updated_at else None
}
# Klasör yoksa oluştur
os.makedirs('database_backups', exist_ok=True)
# Tarih ve zaman damgası ile dosya adı oluştur
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f'database_backups/data_export_{timestamp}.json'
# JSON dosyasına kaydet
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
return filename
if __name__ == '__main__':
backup_file = export_to_json()
print(f"Veritabanı verileri başarıyla dışa aktarıldı: {backup_file}")