mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 19:49:01 +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
	 Elian Doran
						Elian Doran