Write each backed-up original once and skip the precache (closes #106)
check / check (push) Successful in 49s
check / check (push) Successful in 49s
An original fetched for a backup is now written by the download writer straight into the backup's originals/, and the content cache records it there instead of keeping its own copy. One the cache already held is still copied. `quak backup` opens its library with the thumbnail and originals precache off, as the one-shot commands do. Model: opus-5-5
This commit was merged in pull request #124.
This commit is contained in:
+8
-4
@@ -4,7 +4,8 @@
|
||||
// fails the backup before any file is touched), then, for every file in scope,
|
||||
// gets its original bytes onto disk under `downloadDirectory` and rebuilds the
|
||||
// derived views (per-file sidecars, per-collection symlink trees,
|
||||
// per-collection JSON) from the model. The on-disk layout is the historical one, unchanged:
|
||||
// per-collection JSON) from the model. The on-disk layout is the historical
|
||||
// one, unchanged:
|
||||
//
|
||||
// <downloadDirectory>/
|
||||
// originals/<fileID>.<ext> the decrypted bytes
|
||||
@@ -96,8 +97,9 @@ export interface BackupLibrary {
|
||||
listCollections(): Collection[];
|
||||
listFiles(collectionID: number): EnteFile[];
|
||||
// Get an original's bytes onto disk through the content cache/pools,
|
||||
// returning where they landed (the cache, or a prior backup).
|
||||
original(fileID: number): Promise<{ path: string }>;
|
||||
// returning where they landed: `destination` when they were fetched now,
|
||||
// otherwise wherever they already were (the cache, or a prior backup).
|
||||
original(fileID: number, destination: string): Promise<{ path: string }>;
|
||||
thumbnail(fileID: number): Promise<{ path: string }>;
|
||||
}
|
||||
|
||||
@@ -424,7 +426,9 @@ export const runBackup = async (
|
||||
}
|
||||
try {
|
||||
log(`Fetching original ${file.metadata.title} (${fileID})...`);
|
||||
const { path } = await lib.original(fileID);
|
||||
// A fetched original is written straight to `dest`; only one
|
||||
// that was already cached elsewhere is copied.
|
||||
const { path } = await lib.original(fileID, dest);
|
||||
await copyAtomic(path, dest);
|
||||
downloaded++;
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user