@paroicms/server
Version:
The ParoiCMS server
34 lines • 1.4 kB
JavaScript
import { ensureDirectory, fileStatsOrUndef } from "@paroicms/internal-server-lib";
import { createReadStream } from "node:fs";
import { copyFile, rm } from "node:fs/promises";
import { join } from "node:path";
import { buildSiteBackup, makeBackupTempDir } from "./backup-tasks.js";
export async function makeSiteBackup(siteContext, { serverVersion }) {
const tmpPath = join(siteContext.cacheDir, "tmp");
await ensureDirectory(tmpPath);
const { dirPath: backupTempDir, dirName: backupArchiveName } = await makeBackupTempDir(siteContext.fqdn, tmpPath);
const { zipFilePath, zipFileWeight, zipFileName } = await buildSiteBackup(siteContext, {
backupTempDir,
archiveBaseName: backupArchiveName,
serverVersion,
});
await copyFile(zipFilePath, join(siteContext.backupDir, zipFileName));
await rm(zipFilePath);
await rm(backupTempDir, { recursive: true });
return {
zipFileName,
zipFileWeight,
};
}
export async function getBackup(siteContext, backupName) {
const backupPath = join(siteContext.backupDir, backupName);
const fileStats = await fileStatsOrUndef(backupPath);
if (!fileStats)
throw new Error("[backup]: invalid backup path");
const stream = createReadStream(backupPath);
return {
fileWeight: fileStats.size,
fileStream: stream,
};
}
//# sourceMappingURL=backup.js.map