Phase 6: replace rm+rename with rsync --delete pend/ prev/
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* run command — full backup run.
|
* run command — full backup run.
|
||||||
*/
|
*/
|
||||||
import { mkdir, rename, writeFile } from 'fs/promises';
|
import { mkdir, writeFile } from 'fs/promises';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { run as spawn, capture } from '../spawn.js';
|
import { run as spawn, capture } from '../spawn.js';
|
||||||
import { parseItemize } from '../itemize.js';
|
import { parseItemize } from '../itemize.js';
|
||||||
@@ -132,14 +132,7 @@ export async function runCommand(config) {
|
|||||||
// ── Phase 6: Promote PEND → PREV ────────────────────────────
|
// ── Phase 6: Promote PEND → PREV ────────────────────────────
|
||||||
await setPhase(deltas, state, PHASES.PROMOTING, dry);
|
await setPhase(deltas, state, PHASES.PROMOTING, dry);
|
||||||
console.log('\n── Promote PEND → PREV ──');
|
console.log('\n── Promote PEND → PREV ──');
|
||||||
|
await spawn('rsync', ['-aP', '--delete', trailingSlash(pend), trailingSlash(prev)], { dryRun: dry });
|
||||||
if (!dry) {
|
|
||||||
await rm(prev, { recursive: true, force: true });
|
|
||||||
await rename(pend, prev);
|
|
||||||
console.log(` ${pend} → ${prev}`);
|
|
||||||
} else {
|
|
||||||
console.log(`[dry-run] rm -rf ${prev} && mv ${pend} ${prev}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Done ─────────────────────────────────────────────────────
|
// ── Done ─────────────────────────────────────────────────────
|
||||||
state.last_complete = seq;
|
state.last_complete = seq;
|
||||||
|
|||||||
Reference in New Issue
Block a user