From a0e07b43222ae9eb005c829a2e10bc0d82c7a63e Mon Sep 17 00:00:00 2001 From: Florian Hartwich Date: Sat, 15 Jul 2017 12:03:38 +0200 Subject: [PATCH] Add backup cronjob --- api/cron-job/update-signatures.js | 23 +++++++++++++++++++++-- api/routes/wars.js | 2 +- api/server.js | 6 ++++-- backup/backup.sh | 3 +++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/api/cron-job/update-signatures.js b/api/cron-job/update-signatures.js index 82f202d..3e4a5c4 100644 --- a/api/cron-job/update-signatures.js +++ b/api/cron-job/update-signatures.js @@ -2,6 +2,7 @@ const cron = require('cron'); const async = require('async'); +const {exec} = require('child_process'); const UserModel = require('../models/user'); const signatureTool = require('../signature-tool/signature-tool'); @@ -41,10 +42,28 @@ const createAllSignatures = () => { }; +const createBackup = () => { + console.log('\x1b[35m%s\x1b[0m', new Date().toLocaleString() + + ': cron job started - CREATE BACKUP'); + exec(__dirname + '/../../backup/backup.sh', (error, stdout, stderr) => { + if (error) { + console.log(error); + } + console.log('\x1b[32m%s\x1b[0m',stderr); + console.log('\x1b[35m%s\x1b[0m', new Date().toLocaleString() + + ': cron job finished - CREATE BACKUP'); + }) +}; + + // Execute daily @ 02:30 AM -const cronJob = cron.job('00 30 02 * * *', createAllSignatures); +const cronJobSignature = cron.job('00 30 02 * * *', createAllSignatures); + +// Execute daily @ 04:00 AM +const cronJobBackup = cron.job('00 00 04 * * *', createBackup); module.exports = { - cronJob: cronJob, + cronJobSignature: cronJobSignature, + cronJobBackup: cronJobBackup, createAllSignatures: createAllSignatures }; diff --git a/api/routes/wars.js b/api/routes/wars.js index a7e2b7d..daa3393 100644 --- a/api/routes/wars.js +++ b/api/routes/wars.js @@ -8,7 +8,7 @@ const express = require('express'); const multer = require('multer'); const storage = multer.memoryStorage(); const upload = multer({storage: storage}); -const logger = require('debug')('cc:squads'); +const logger = require('debug')('cc:wars'); // HTTP status codes by name const codes = require('./http-codes'); diff --git a/api/server.js b/api/server.js index 70367a4..d5bcfc6 100644 --- a/api/server.js +++ b/api/server.js @@ -15,9 +15,10 @@ const urls = require('./config/api-url'); const restAPIchecks = require('./middleware/request-checks.js'); const errorResponseWare = require('./middleware/error-response'); const apiAuthenticationMiddleware = require('./middleware/auth-middleware'); -const checkSql = require('./middleware/permission-check').checkSql; const checkAdmin = require('./middleware/permission-check').checkAdmin; -const signatureCronJob = require('./cron-job/update-signatures').cronJob; +const signatureCronJob = require('./cron-job/update-signatures').cronJobSignature; +const backupCronJob = require('./cron-job/update-signatures').cronJobBackup; + // router modules const authenticateRouter = require('./routes/authenticate'); @@ -110,6 +111,7 @@ if (process.env.NODE_ENV !== config.test.env) { else { debug('Listening on port ' + config.port); signatureCronJob.start(); + backupCronJob.start(); } }); } else { diff --git a/backup/backup.sh b/backup/backup.sh index 389f322..4374b49 100755 --- a/backup/backup.sh +++ b/backup/backup.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# execute script in its location folder +cd $(dirname $0) + deleteOldest() { line_num=0 while IFS= read -r -d $'\0'; do