这段时间偶尔打理了一下博客,没以前那么勤了,一直想给博客换个皮肤,看来这年无望了,今天没去上课,就在宿舍写了这个玩意。代码并不是很多,实现起来并没有PHP那么快捷,有些地方要绕很多弯。数据库备份完打包的时候,使用系统的命令相比第三方的类库,来的更快,效率更高。

const Archiver = require('archiver');
const fs = require('fs');
const path = require('path');
module.exports.create=function(conf,callback){
  var output = fs.createWriteStream(conf.archiver.fileName);
  var archive =new Archiver(conf.archiver.fileType);
  archive.on('error', function(err){
    throw err;

  });
  archive.file(conf.mysql.fileName);
  archive.pipe(output);
  archive.directory(conf.archiver.www,'/'+path.basename(conf.archiver.www));
  archive.finalize();
  archive.on('finish',function(){
    callback();
  });
}

nodejs有提供一个zlib库,但是不知道怎么用,最后使用的是archiver这个类库,官方文档看不懂,勉强可以整个文件夹打包起来。博客使用的是MySQL数据库,直接使用mysqldump工具。

const cp = require('child_process');
module.exports.backup=function(conf,callback){
  cp.exec('mysqldump --user='+conf.mysql.user+' --password='+conf.mysql.password+' '+conf.mysql.database+' | gzip > \''+conf.mysql.fileName+'\'',
  function(err,stdout,stderr){
    if(err) {
      callback('error','备份数据库发生错误:'+stderr);
      return ;
    }
    callback();
  })
}

上传到七牛过程算是比较简单的,官方提供了示例代码和sdk,稍微修改下即可使用。服务器用的是阿里云,还是上传了几十分钟,不知道国外服务器会不会出错。 代码并不完整,而且写的很渣,进度条,日志都没有添加,并不能保证一定能用,下载完修改配置文件config.js,根据提示设置七牛私钥,数据库用户名和地址代码下载地址:https://tristana.cn/share/backupJS.zip QQ截图20161216221842.png