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.
|
* 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 { 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';
|
||||||
@@ -22,20 +22,18 @@ export async function runCommand(config) {
|
|||||||
|
|
||||||
// TODO: detect and recover from partially-committed previous run
|
// 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);
|
await setPhase(deltas, state, PHASES.CLEARING_PEND, dry);
|
||||||
console.log('\n── Clear PEND ──');
|
|
||||||
if (!dry) {
|
if (!dry) {
|
||||||
await rm(pend, { recursive: true, force: true });
|
|
||||||
await mkdir(pend, { recursive: true });
|
await mkdir(pend, { recursive: true });
|
||||||
} else {
|
} 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);
|
await setPhase(deltas, state, PHASES.RSYNC_LOCAL, dry);
|
||||||
console.log('\n── rsync PREV → PEND (local seed) ──');
|
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 ───────
|
// ── Phase 3: rsync SOURCE → PEND, capture change list ───────
|
||||||
await setPhase(deltas, state, PHASES.RSYNC_REMOTE, dry);
|
await setPhase(deltas, state, PHASES.RSYNC_REMOTE, dry);
|
||||||
|
|||||||
Reference in New Issue
Block a user