![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/private_html/scripts/ |
#!/usr/bin/env node
// MySQL Database Backup Script for lavocat.quebec
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const BACKUP_DIR = '/home/gositeme/backups/lavocat.quebec';
const DB_NAME = 'gositeme_avocat';
const DOMAIN = 'lavocat.quebec';
console.log('๐พ Starting MySQL database backup for lavocat.quebec...');
// Create backup directory if it doesn't exist
if (!fs.existsSync(BACKUP_DIR)) {
fs.mkdirSync(BACKUP_DIR, { recursive: true });
console.log('โ
Created backup directory');
}
// Generate backup filename with timestamp
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const backupFilename = `mysql-production-${timestamp}.sql`;
const backupPath = path.join(BACKUP_DIR, backupFilename);
try {
// Check if mysqldump is available
try {
execSync('which mysqldump', { stdio: 'ignore' });
} catch {
console.error('โ mysqldump is not installed. Please install MySQL client tools.');
process.exit(1);
}
// Create backup
console.log('๐ Creating MySQL database backup...');
// Use the actual database credentials
const mysqlUser = process.env.MYSQL_USER || 'gositeme_avocat';
const mysqlPassword = process.env.MYSQL_PASSWORD || 'TDZEMAwNvFznSKQeDkjY';
let mysqldumpCommand;
if (mysqlPassword) {
mysqldumpCommand = `mysqldump -u ${mysqlUser} -p${mysqlPassword} --single-transaction --routines --triggers ${DB_NAME} > "${backupPath}"`;
} else {
mysqldumpCommand = `mysqldump -u ${mysqlUser} --single-transaction --routines --triggers ${DB_NAME} > "${backupPath}"`;
}
execSync(mysqldumpCommand, { stdio: 'inherit' });
// Get file size
const stats = fs.statSync(backupPath);
const fileSizeInMB = (stats.size / (1024 * 1024)).toFixed(2);
console.log('โ
MySQL database backup completed successfully!');
console.log(`๐ Backup file: ${backupPath}`);
console.log(`๐ File size: ${fileSizeInMB} MB`);
// Clean up old backups (keep last 10)
console.log('๐งน Cleaning up old backups...');
const files = fs.readdirSync(BACKUP_DIR)
.filter(file => file.startsWith('mysql-production-') && file.endsWith('.sql'))
.map(file => ({
name: file,
path: path.join(BACKUP_DIR, file),
mtime: fs.statSync(path.join(BACKUP_DIR, file)).mtime
}))
.sort((a, b) => b.mtime - a.mtime);
// Keep only the last 10 backups
if (files.length > 10) {
const filesToDelete = files.slice(10);
filesToDelete.forEach(file => {
fs.unlinkSync(file.path);
console.log(`๐๏ธ Deleted old backup: ${file.name}`);
});
}
console.log(`๐ Total MySQL backups: ${files.length}`);
} catch (error) {
console.error('โ Backup failed:', error.message);
console.log('๐ก Make sure MySQL is running and credentials are correct');
process.exit(1);
}
// Optional: Create a compressed backup
const createCompressedBackup = () => {
try {
const compressedFilename = `mysql-production-${timestamp}.sql.gz`;
const compressedPath = path.join(BACKUP_DIR, compressedFilename);
console.log('๐๏ธ Creating compressed backup...');
execSync(`gzip -c "${backupPath}" > "${compressedPath}"`, { stdio: 'inherit' });
const stats = fs.statSync(compressedPath);
const fileSizeInMB = (stats.size / (1024 * 1024)).toFixed(2);
console.log('โ
Compressed backup created!');
console.log(`๐ Compressed file: ${compressedPath}`);
console.log(`๐ Compressed size: ${fileSizeInMB} MB`);
// Clean up uncompressed backup
fs.unlinkSync(backupPath);
console.log('๐๏ธ Removed uncompressed backup');
} catch (error) {
console.error('โ Compressed backup failed:', error.message);
}
};
// Create compressed backup if requested
if (process.argv.includes('--compress')) {
createCompressedBackup();
}
console.log('\n๐ Backup completed successfully!');
console.log('๐ก To restore from backup:');
console.log(` mysql -u [username] -p [database_name] < "${backupPath}"`);
console.log('๐ก To create compressed backup:');
console.log(' node scripts/backup-mysql.js --compress');
console.log('๐ก Set MySQL credentials as environment variables:');
console.log(' export MYSQL_USER=your_username');
console.log(' export MYSQL_PASSWORD=your_password');