mirror of
https://github.com/Sebclem/hassio-nextcloud-backup.git
synced 2024-08-18 21:54:56 +02:00
🔨 Add clean for local snapshots
This commit is contained in:
parent
fe0f923158
commit
cdcbac4bc6
@ -169,7 +169,11 @@ router.post('/backup-settings', function(req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.post('/clean-now', function(req, res, next){
|
router.post('/clean-now', function(req, res, next){
|
||||||
webdav.clean();
|
webdav.clean().then(()=>{
|
||||||
|
hassioApiTools.clean().catch();
|
||||||
|
}).catch(()=>{
|
||||||
|
hassioApiTools.clean().catch();
|
||||||
|
});
|
||||||
res.status(201);
|
res.status(201);
|
||||||
res.send()
|
res.send()
|
||||||
});
|
});
|
||||||
|
@ -2,6 +2,8 @@ const request = require('request');
|
|||||||
const progress = require('request-progress');
|
const progress = require('request-progress');
|
||||||
const statusTools = require('./status');
|
const statusTools = require('./status');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const settingsTools = require('./settingsTools');
|
||||||
|
const moment = require('moment');
|
||||||
|
|
||||||
|
|
||||||
// !!! FOR DEV PURPOSE ONLY !!!
|
// !!! FOR DEV PURPOSE ONLY !!!
|
||||||
@ -98,6 +100,30 @@ function downloadSnapshot(id) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function dellSnap(id) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
checkSnap(id).then(() => {
|
||||||
|
let token = process.env.HASSIO_TOKEN;
|
||||||
|
if (token == null) {
|
||||||
|
token = fallbackToken
|
||||||
|
}
|
||||||
|
let option = {
|
||||||
|
url: 'http://hassio/snapshots/' + id + '/remove',
|
||||||
|
headers: { 'X-HASSIO-KEY': token },
|
||||||
|
json: true
|
||||||
|
}
|
||||||
|
request.post(option, (error, response, body) => {
|
||||||
|
if (error || (response.statusCode != 200 && response.statusCode != 204))
|
||||||
|
reject();
|
||||||
|
else
|
||||||
|
resolve();
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
reject();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function checkSnap(id) {
|
function checkSnap(id) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -142,13 +168,13 @@ function createNewBackup(name) {
|
|||||||
request.post(option, (error, response, body) => {
|
request.post(option, (error, response, body) => {
|
||||||
if (response.statusCode != 200) {
|
if (response.statusCode != 200) {
|
||||||
status.status = "error";
|
status.status = "error";
|
||||||
status.message = "Can't create new snapshot ("+ error + ")";
|
status.message = "Can't create new snapshot (" + error + ")";
|
||||||
status.error_code = 5;
|
status.error_code = 5;
|
||||||
statusTools.setStatus(status);
|
statusTools.setStatus(status);
|
||||||
console.error(status.message);
|
console.error(status.message);
|
||||||
reject(status.message);
|
reject(status.message);
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
body.data.slug
|
body.data.slug
|
||||||
console.log('Snapshot created with id ' + body.data.slug);
|
console.log('Snapshot created with id ' + body.data.slug);
|
||||||
resolve(body.data.slug);
|
resolve(body.data.slug);
|
||||||
@ -157,6 +183,35 @@ function createNewBackup(name) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clean() {
|
||||||
|
let limit = settingsTools.getSettings().auto_clean_backup_keep;
|
||||||
|
if (limit == null)
|
||||||
|
limit = 5;
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
getSnapshots().then(async (snaps) => {
|
||||||
|
if (snaps.length < limit) {
|
||||||
|
resolve();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
snaps.sort((a, b) => {
|
||||||
|
if (moment(a.date).isBefore(moment(b.date)))
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
let toDel = snaps.slice(limit);
|
||||||
|
for (let i in toDel) {
|
||||||
|
await dellSnap(toDel[i].slug)
|
||||||
|
}
|
||||||
|
console.log('Local clean done.')
|
||||||
|
resolve();
|
||||||
|
}).catch(() => {
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
exports.getSnapshots = getSnapshots;
|
exports.getSnapshots = getSnapshots;
|
||||||
exports.downloadSnapshot = downloadSnapshot;
|
exports.downloadSnapshot = downloadSnapshot;
|
||||||
exports.createNewBackup = createNewBackup;
|
exports.createNewBackup = createNewBackup;
|
||||||
|
exports.clean = clean;
|
Loading…
Reference in New Issue
Block a user