TransHub_backend / cron-setup-guide.js
linguabot's picture
Upload folder using huggingface_hub
da819ac verified
#!/usr/bin/env node
const fs = require('fs').promises;
const path = require('path');
// Cron Setup and Backup Usage Guide
const cronGuide = {
// Show cron setup instructions
showCronSetup() {
console.log('⏰ CRON JOB SETUP GUIDE');
console.log('=======================\n');
console.log('1. πŸ“ EDIT CRONTAB:');
console.log(' crontab -e');
console.log('');
console.log('2. πŸ“‹ ADD BACKUP JOB (choose one):');
console.log('');
console.log(' # Daily backup at 2 AM');
console.log(' 0 2 * * * cd /Users/hongchangyu/Downloads/App\\ Projects/Cultural\\ Shift\\ Sandbox/deploy/backend && node comprehensive-backup.js');
console.log('');
console.log(' # Weekly backup on Sunday at 3 AM');
console.log(' 0 3 * * 0 cd /Users/hongchangyu/Downloads/App\\ Projects/Cultural\\ Shift\\ Sandbox/deploy/backend && node comprehensive-backup.js');
console.log('');
console.log(' # Every 6 hours');
console.log(' 0 */6 * * * cd /Users/hongchangyu/Downloads/App\\ Projects/Cultural\\ Shift\\ Sandbox/deploy/backend && node comprehensive-backup.js');
console.log('');
console.log('3. βœ… VERIFY CRON JOBS:');
console.log(' crontab -l');
console.log('');
console.log('4. πŸ“Š CHECK CRON LOGS:');
console.log(' tail -f /var/log/cron');
console.log(' or');
console.log(' grep CRON /var/log/syslog');
console.log('');
},
// Show backup usage instructions
showBackupUsage() {
console.log('πŸ’Ύ BACKUP USAGE GUIDE');
console.log('=====================\n');
console.log('πŸ“‹ CHECK AVAILABLE BACKUPS:');
console.log(' node simple-automated-backup.js');
console.log(' # Lists all backups with details');
console.log('');
console.log('πŸ” VERIFY BACKUP INTEGRITY:');
console.log(' node comprehensive-backup.js');
console.log(' # Creates new backup and verifies integrity');
console.log('');
console.log('πŸ“Š BACKUP CONTENTS:');
console.log(' - Database: All collections (subtitles, source texts, users)');
console.log(' - Code: Frontend and backend files');
console.log(' - Configuration: package.json, Dockerfile, etc.');
console.log(' - Manifest: Backup metadata and verification info');
console.log('');
console.log('πŸ”„ RESTORE FROM BACKUP:');
console.log(' # Database only (safe)');
console.log(' node restore-database.js <backup-name>');
console.log('');
console.log(' # Full restore (including code)');
console.log(' node restore-comprehensive.js <backup-name>');
console.log('');
},
// Show cron job examples
showCronExamples() {
console.log('πŸ“ CRON JOB EXAMPLES');
console.log('====================\n');
console.log('⏰ TIME FORMAT: minute hour day month day-of-week command');
console.log('');
console.log('πŸ“… COMMON SCHEDULES:');
console.log(' 0 2 * * * # Daily at 2 AM');
console.log(' 0 */6 * * * # Every 6 hours');
console.log(' 0 3 * * 0 # Weekly on Sunday at 3 AM');
console.log(' 0 1 1 * * # Monthly on 1st at 1 AM');
console.log(' */30 * * * * # Every 30 minutes');
console.log('');
console.log('πŸ”§ BACKUP COMMANDS:');
console.log(' # Simple data backup');
console.log(' node simple-automated-backup.js');
console.log('');
console.log(' # Comprehensive backup (data + code)');
console.log(' node comprehensive-backup.js');
console.log('');
console.log(' # With logging');
console.log(' node comprehensive-backup.js >> backup.log 2>&1');
console.log('');
},
// Show backup locations
showBackupLocations() {
console.log('πŸ“ BACKUP LOCATIONS');
console.log('===================\n');
const backupDir = path.join(__dirname, 'backups');
console.log(`πŸ“‚ Local backups: ${backupDir}`);
console.log('');
console.log('πŸ“‹ BACKUP STRUCTURE:');
console.log(' backups/');
console.log(' β”œβ”€β”€ comprehensive-backup-2025-08-05T.../');
console.log(' β”‚ β”œβ”€β”€ database.json # All database data');
console.log(' β”‚ β”œβ”€β”€ code/ # All source code');
console.log(' β”‚ β”‚ β”œβ”€β”€ backend/ # Backend files');
console.log(' β”‚ β”‚ β”œβ”€β”€ frontend/ # Frontend files');
console.log(' β”‚ β”‚ └── root/ # Root config');
console.log(' β”‚ β”œβ”€β”€ config/ # Configuration files');
console.log(' β”‚ └── manifest.json # Backup metadata');
console.log(' └── auto-backup-2025-08-05T.../');
console.log(' └── database.json # Data only');
console.log('');
console.log('πŸ’Ύ BACKUP TYPES:');
console.log(' - comprehensive-backup-* : Data + Code + Config');
console.log(' - auto-backup-* : Data only (faster)');
console.log('');
},
// Show how to check backup contents
async showBackupContents() {
console.log('πŸ” CHECKING BACKUP CONTENTS');
console.log('===========================\n');
const backupDir = path.join(__dirname, 'backups');
try {
const backups = await fs.readdir(backupDir);
if (backups.length === 0) {
console.log('❌ No backups found');
return;
}
console.log('πŸ“‹ Available backups:');
for (const backup of backups) {
const backupPath = path.join(backupDir, backup);
const stats = await fs.stat(backupPath);
if (stats.isDirectory()) {
console.log(` πŸ“¦ ${backup} (${stats.mtime.toLocaleString()})`);
// Check if it's a comprehensive backup
const manifestPath = path.join(backupPath, 'manifest.json');
try {
await fs.access(manifestPath);
console.log(` βœ… Comprehensive backup (data + code)`);
} catch {
console.log(` πŸ“Š Data backup only`);
}
}
}
} catch (error) {
console.log('❌ Could not read backup directory:', error.message);
}
console.log('');
console.log('πŸ” TO EXAMINE A SPECIFIC BACKUP:');
console.log(' ls -la backups/comprehensive-backup-*/');
console.log(' cat backups/comprehensive-backup-*/manifest.json');
console.log('');
}
};
// Main function
const main = async () => {
console.log('πŸš€ CRON & BACKUP GUIDE');
console.log('======================\n');
// Show all guides
cronGuide.showCronSetup();
cronGuide.showBackupUsage();
cronGuide.showCronExamples();
cronGuide.showBackupLocations();
await cronGuide.showBackupContents();
console.log('🎯 QUICK START:');
console.log('1. Set up cron: crontab -e');
console.log('2. Add: 0 2 * * * cd /path/to/backend && node comprehensive-backup.js');
console.log('3. Check backups: node simple-automated-backup.js');
console.log('4. Restore if needed: node restore-database.js <backup-name>');
console.log('');
console.log('πŸ“ž NEED HELP?');
console.log('- Check cron logs: tail -f /var/log/cron');
console.log('- Test backup: node comprehensive-backup.js');
console.log('- List backups: node simple-automated-backup.js');
};
// Run the guide
main();