mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
server-ts: Port backup service
This commit is contained in:
parent
6b8ee084e6
commit
8936a3fa3b
@ -46,7 +46,7 @@ require('./routes/error_handlers.js').register(app);
|
|||||||
require('./services/sync.js');
|
require('./services/sync.js');
|
||||||
|
|
||||||
// triggers backup timer
|
// triggers backup timer
|
||||||
require('./services/backup.js');
|
require('./services/backup');
|
||||||
|
|
||||||
// trigger consistency checks timer
|
// trigger consistency checks timer
|
||||||
require('./services/consistency_checks.js');
|
require('./services/consistency_checks.js');
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const eu = require('./etapi_utils');
|
const eu = require('./etapi_utils');
|
||||||
const backupService = require('../services/backup.js');
|
const backupService = require('../services/backup');
|
||||||
|
|
||||||
function register(router) {
|
function register(router) {
|
||||||
eu.route(router, 'put', '/etapi/backup/:backupName', async (req, res, next) => {
|
eu.route(router, 'put', '/etapi/backup/:backupName', async (req, res, next) => {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
const sql = require('../../services/sql');
|
const sql = require('../../services/sql');
|
||||||
const log = require('../../services/log');
|
const log = require('../../services/log');
|
||||||
const backupService = require('../../services/backup.js');
|
const backupService = require('../../services/backup');
|
||||||
const anonymizationService = require('../../services/anonymization');
|
const anonymizationService = require('../../services/anonymization');
|
||||||
const consistencyChecksService = require('../../services/consistency_checks.js');
|
const consistencyChecksService = require('../../services/consistency_checks.js');
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ const etapiBranchRoutes = require('../etapi/branches.js');
|
|||||||
const etapiNoteRoutes = require('../etapi/notes.js');
|
const etapiNoteRoutes = require('../etapi/notes.js');
|
||||||
const etapiSpecialNoteRoutes = require('../etapi/special_notes.js');
|
const etapiSpecialNoteRoutes = require('../etapi/special_notes.js');
|
||||||
const etapiSpecRoute = require('../etapi/spec.js');
|
const etapiSpecRoute = require('../etapi/spec.js');
|
||||||
const etapiBackupRoute = require('../etapi/backup.js');
|
const etapiBackupRoute = require('../etapi/backup');
|
||||||
|
|
||||||
const csrfMiddleware = csurf({
|
const csrfMiddleware = csurf({
|
||||||
cookie: true,
|
cookie: true,
|
||||||
|
@ -20,7 +20,7 @@ const specialNotesService = require('./special_notes.js');
|
|||||||
const branchService = require('./branches.js');
|
const branchService = require('./branches.js');
|
||||||
const exportService = require('./export/zip.js');
|
const exportService = require('./export/zip.js');
|
||||||
const syncMutex = require('./sync_mutex');
|
const syncMutex = require('./sync_mutex');
|
||||||
const backupService = require('./backup.js');
|
const backupService = require('./backup');
|
||||||
const optionsService = require('./options');
|
const optionsService = require('./options');
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const dateUtils = require('./date_utils');
|
import dateUtils = require('./date_utils');
|
||||||
const optionService = require('./options');
|
import optionService = require('./options');
|
||||||
const fs = require('fs-extra');
|
import fs = require('fs-extra');
|
||||||
const dataDir = require('./data_dir');
|
import dataDir = require('./data_dir');
|
||||||
const log = require('./log');
|
import log = require('./log');
|
||||||
const syncMutexService = require('./sync_mutex');
|
import syncMutexService = require('./sync_mutex');
|
||||||
const cls = require('./cls');
|
import cls = require('./cls');
|
||||||
const sql = require('./sql');
|
import sql = require('./sql');
|
||||||
const path = require('path');
|
import path = require('path');
|
||||||
|
|
||||||
|
type BackupType = ("daily" | "weekly" | "monthly");
|
||||||
|
|
||||||
function getExistingBackups() {
|
function getExistingBackups() {
|
||||||
if (!fs.existsSync(dataDir.BACKUP_DIR)) {
|
if (!fs.existsSync(dataDir.BACKUP_DIR)) {
|
||||||
@ -35,13 +37,13 @@ function regularBackup() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function isBackupEnabled(backupType) {
|
function isBackupEnabled(backupType: BackupType) {
|
||||||
const optionName = `${backupType}BackupEnabled`;
|
const optionName = `${backupType}BackupEnabled`;
|
||||||
|
|
||||||
return optionService.getOptionBool(optionName);
|
return optionService.getOptionBool(optionName);
|
||||||
}
|
}
|
||||||
|
|
||||||
function periodBackup(optionName, backupType, periodInSeconds) {
|
function periodBackup(optionName: string, backupType: BackupType, periodInSeconds: number) {
|
||||||
if (!isBackupEnabled(backupType)) {
|
if (!isBackupEnabled(backupType)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -56,7 +58,7 @@ function periodBackup(optionName, backupType, periodInSeconds) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function backupNow(name) {
|
async function backupNow(name: string) {
|
||||||
// we don't want to back up DB in the middle of sync with potentially inconsistent DB state
|
// we don't want to back up DB in the middle of sync with potentially inconsistent DB state
|
||||||
return await syncMutexService.doExclusively(async () => {
|
return await syncMutexService.doExclusively(async () => {
|
||||||
const backupFile = `${dataDir.BACKUP_DIR}/backup-${name}.db`;
|
const backupFile = `${dataDir.BACKUP_DIR}/backup-${name}.db`;
|
||||||
@ -73,7 +75,7 @@ if (!fs.existsSync(dataDir.BACKUP_DIR)) {
|
|||||||
fs.mkdirSync(dataDir.BACKUP_DIR, 0o700);
|
fs.mkdirSync(dataDir.BACKUP_DIR, 0o700);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
export = {
|
||||||
getExistingBackups,
|
getExistingBackups,
|
||||||
backupNow,
|
backupNow,
|
||||||
regularBackup
|
regularBackup
|
@ -1,4 +1,4 @@
|
|||||||
const backupService = require('./backup.js');
|
const backupService = require('./backup');
|
||||||
const sql = require('./sql');
|
const sql = require('./sql');
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const log = require('./log');
|
const log = require('./log');
|
||||||
|
@ -166,10 +166,10 @@ dbReady.then(() => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setInterval(() => require('./backup.js').regularBackup(), 4 * 60 * 60 * 1000);
|
setInterval(() => require('./backup').regularBackup(), 4 * 60 * 60 * 1000);
|
||||||
|
|
||||||
// kickoff first backup soon after start up
|
// kickoff first backup soon after start up
|
||||||
setTimeout(() => require('./backup.js').regularBackup(), 5 * 60 * 1000);
|
setTimeout(() => require('./backup').regularBackup(), 5 * 60 * 1000);
|
||||||
|
|
||||||
// optimize is usually inexpensive no-op, so running it semi-frequently is not a big deal
|
// optimize is usually inexpensive no-op, so running it semi-frequently is not a big deal
|
||||||
setTimeout(() => optimize(), 60 * 60 * 1000);
|
setTimeout(() => optimize(), 60 * 60 * 1000);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user