import { execSync, type ExecSyncOptions } from "child_process"; import path from "path"; import s3DownloadFile from "../utils/s3-download"; const BACKUP_DIR = `/root/backups`; const DOCKER_DIR = "/var/lib/docker"; const R2_FILE_NAME = `${process.env.CODERANK_HOST_DOMAIN}.tar.xz`; const R2_FOLDER = `archives/servers`; const BACKUP_FILE_TAR = path.join(BACKUP_DIR, R2_FILE_NAME); const execOpts: ExecSyncOptions = { stdio: ["inherit", "inherit", "ignore"], }; await s3DownloadFile({ downloadPath: BACKUP_FILE_TAR, downloadFileName: R2_FILE_NAME, folder: R2_FOLDER, }); execSync(`tar -xf ${R2_FILE_NAME}`, { ...execOpts, cwd: BACKUP_DIR, }); /** * # Sync Docker Volumes */ execSync(`rsync -avz ${BACKUP_DIR}/docker/ ${DOCKER_DIR}/`, { ...execOpts, });