Replace rm -rf PEND with mkdir -p, use --delete on both rsyncs
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user