发布于2026-07-21 阅读(0)
扫一扫,手机访问
在 Linux 上配合 Node.js 来做数据备份与恢复,其实比想象中要灵活得多。下面就从几个核心环节入手,把整个流程拆解清楚。

tar 命令进行文件备份tar 是 Linux 下打包压缩的老牌工具,简单直接。一行命令就能搞定:
# 创建一个备份文件tar -czvf backup.tar.gz /path/to/data
如果你希望把备份操作集成到应用里,写个 Node.js 脚本会更顺手。借助 tar 这个 npm 包,代码非常简洁:
const fs = require('fs');
const tar = require('tar');
const sourceDir = '/path/to/data';
const backupFile = 'backup.tar.gz';
const output = fs.createWriteStream(backupFile);
const archive = tar.c({gzip: true}, [sourceDir]);
archive.pipe(output);
archive.on('finish', () => {
console.log(`${backupFile} 备份完成`);
});
tar 命令进行数据恢复恢复数据同样简单,解压命令走起:
# 解压缩备份文件tar -xzvf backup.tar.gz -C /path/to/restore
对应的 Node.js 恢复脚本也很直观,注意这里用 tar.x 解压,并可以设置 strip 去掉顶层目录:
const fs = require('fs');
const tar = require('tar');
const backupFile = 'backup.tar.gz';
const restoreDir = '/path/to/restore';
const input = fs.createReadStream(backupFile);
const archive = tar.x({strip: 1 // 去掉备份文件的顶层目录});
archive.pipe(fs.createWriteStream(`${restoreDir}/data`));
archive.on('finish', () => {
console.log(`数据恢复完成到 ${restoreDir}`);
});
定时任务这种事,交给 Linux 的 cron 再合适不过。你可以把备份脚本做成 cron 任务,每天自动执行;恢复脚本则按需手动触发。
cron 作业编辑 crontab 文件:
crontab -e
添加下面这行,让系统每天凌晨 2 点自动跑备份脚本:
0 2 * * * /usr/bin/node /path/to/backup-script.js
真要恢复数据时,直接运行:
/usr/bin/node /path/to/restore-script.js
如果想进一步简化,社区里还有现成的轮子可以借力,比如 node-backup 和 node-cron。它们能帮你把备份逻辑和调度逻辑封装得更优雅。
node-backupconst Backup = require('node-backup');
const backup = new Backup();
backup.add('/path/to/data', 'backup.tar.gz')
.then(() => {
console.log('备份完成');
})
.catch(err => {
console.error('备份失败', err);
});
node-cronconst cron = require('node-cron');
const { exec } = require('child_process');
// 每天凌晨 2 点执行备份脚本
cron.schedule('0 2 * * *', () => {
exec('node /path/to/backup-script.js', (error, stdout, stderr) => {
if (error) {
console.error(`执行备份脚本时出错: ${error}`);
return;
}
console.log(stdout);
});
});
这样一来,无论是手动备份还是定时自动化,整套方案都算完整了。当然,具体用哪种工具,还得看你的实际场景——灵活搭配才是王道。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8