商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Node.js 应用在 Linux 上如何实现数据备份与恢复

Node.js 应用在 Linux 上如何实现数据备份与恢复

  发布于2026-07-21 阅读(0)

扫一扫,手机访问

在 Linux 上配合 Node.js 来做数据备份与恢复,其实比想象中要灵活得多。下面就从几个核心环节入手,把整个流程拆解清楚。

Node.js 应用在 Linux 上如何实现数据备份与恢复

1. 数据备份

使用 tar 命令进行文件备份

tar 是 Linux 下打包压缩的老牌工具,简单直接。一行命令就能搞定:

# 创建一个备份文件tar -czvf backup.tar.gz /path/to/data

使用 Node.js 脚本进行备份

如果你希望把备份操作集成到应用里,写个 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} 备份完成`);
});

2. 数据恢复

使用 tar 命令进行数据恢复

恢复数据同样简单,解压命令走起:

# 解压缩备份文件tar -xzvf backup.tar.gz -C /path/to/restore

使用 Node.js 脚本进行数据恢复

对应的 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}`);
});

3. 自动化备份与恢复

定时任务这种事,交给 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

4. 使用第三方库

如果想进一步简化,社区里还有现成的轮子可以借力,比如 node-backupnode-cron。它们能帮你把备份逻辑和调度逻辑封装得更优雅。

使用 node-backup

const 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-cron

const 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);
});
});

这样一来,无论是手动备份还是定时自动化,整套方案都算完整了。当然,具体用哪种工具,还得看你的实际场景——灵活搭配才是王道。

本文转载于:https://www.yisu.com/ask/66200756.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注