const fs = require('fs');
const path = require('path');
const cron = require('node-cron');
// Configuration
const sourceDirectory = './source'; // Directory to backup from
const backupDirectory = './backup'; // Directory to backup to
const maxFileSize = 1024 * 1024 * 10; // 10MB limit per file
const maxFiles = 5; // Limit to 5 files per run
const backupInterval = '0 0 * * *'; // Daily at midnight (Cron expression)
/**
* Backs up text files from a source directory to a backup directory.
*/
async function backupFiles() {
try {
const files = fs.readdirSync(sourceDirectory);
let backedUpCount = 0;
for (const file of files) {
const filePath = path.join(sourceDirectory, file);
const stat = fs.statSync(filePath);
if (stat.isFile() && file.endsWith('.txt')) {
if (stat.size > maxFileSize) {
console.log(`Skipping ${file} - exceeds size limit (${maxFileSize} bytes).`);
continue;
}
try {
const fileContent = fs.readFileSync(filePath, 'utf8');
const backupFilePath = path.join(backupDirectory, file);
fs.writeFileSync(backupFilePath, fileContent, 'utf8');
backedUpCount++;
console.log(`Backed up ${file} to ${backupFilePath}`);
} catch (err) {
console.error(`Error backing up ${file}: ${err}`);
}
}
}
console.log(`Backup completed. ${backedUpCount} files backed up.`);
} catch (err) {
console.error(`Error during backup process: ${err}`);
}
}
/**
* Schedules the backup task using cron.
*/
function scheduleBackup() {
cron.schedule(backupInterval, () => {
console.log('Running scheduled backup...');
backupFiles();
});
}
// Run the scheduler
scheduleBackup();
Add your comment