Replace rm -rf PEND with mkdir -p, use --delete on both rsyncs

This commit is contained in:
2026-03-07 01:32:33 +00:00
parent e999fca352
commit d1c65a06d5

View File

@@ -1,7 +1,7 @@
/**
* run command — full backup run.
*/
import { rm, mkdir, rename, writeFile } from 'fs/promises';
import { mkdir, rename, writeFile } from 'fs/promises';
import { join } from 'path';
import { run as spawn, capture } from '../spawn.js';
import { parseItemize } from '../itemize.js';
@@ -22,20 +22,18 @@ export async function runCommand(config) {
// TODO: detect and recover from partially-committed previous run
// ── Phase 1: Clear PEND ─────────────────────────────────────
// ── Phase 1: Ensure PEND exists ─────────────────────────────
await setPhase(deltas, state, PHASES.CLEARING_PEND, dry);
console.log('\n── Clear PEND ──');
if (!dry) {
await rm(pend, { recursive: true, force: true });
await mkdir(pend, { recursive: true });
} else {
console.log(`[dry-run] rm -rf ${pend} && mkdir -p ${pend}`);
console.log(`[dry-run] mkdir -p ${pend}`);
}
// ── Phase 2: rsync PREV → PEND (local seed) ─────────────────
// ── Phase 2: rsync PREV → PEND (local seed, with delete) ────
await setPhase(deltas, state, PHASES.RSYNC_LOCAL, dry);
console.log('\n── rsync PREV → PEND (local seed) ──');
await spawn('rsync', ['-aP', trailingSlash(prev), trailingSlash(pend)], { dryRun: dry });
await spawn('rsync', ['-aP', '--delete', trailingSlash(prev), trailingSlash(pend)], { dryRun: dry });
// ── Phase 3: rsync SOURCE → PEND, capture change list ───────
await setPhase(deltas, state, PHASES.RSYNC_REMOTE, dry);