Răsfoiți Sursa

Resolve file sizes for v3 backups

Tor Arne Vestbø 5 ani în urmă
părinte
comite
e93a2b4974
1 a modificat fișierele cu 9 adăugiri și 1 ștergeri
  1. 9 1
      tools/reports/backup/files.js

+ 9 - 1
tools/reports/backup/files.js

@@ -2,6 +2,7 @@ const fs = require('fs-extra')
 const path = require('path')
 const log = require('../../util/log')
 const manifestMBDBParse = require('../../util/manifest_mbdb_parse')
+const bplist = require('bplist-parser')
 
 module.exports = {
   version: 4,
@@ -39,9 +40,16 @@ function getSqliteFileManifest (backup) {
   return new Promise(async (resolve, reject) => {
     backup.openDatabase('Manifest.db', true)
       .then(db => {
-        db.all('SELECT fileID, domain, relativePath as filename from FILES', async function (err, rows) {
+        db.all('SELECT fileID, domain, relativePath as filename, file from FILES', async function (err, rows) {
           if (err) reject(err)
 
+          // Extract binary plist metadata
+          for (var row of rows) {
+            let data = bplist.parseBuffer(row.file)[0]
+            let metadata = data['$objects'][1];
+            row.filelen = metadata.Size
+          }
+
           resolve(rows)
         })
       })