39 lines
988 B
TypeScript
39 lines
988 B
TypeScript
import { execSync, type ExecSyncOptions } from "child_process";
|
|
import path from "path";
|
|
import s3DownloadFile from "../utils/s3-download";
|
|
|
|
const BACKUP_DIR = `/root/backups`;
|
|
const BACKUP_FILE_NAME = "backup.tar.xz";
|
|
const BACKUP_DIR_BACKUP = path.join(BACKUP_DIR, `.backup`);
|
|
const DOCKER_DIR = "/var/lib/docker";
|
|
const DOCKER_VOLUMES_BACKUP_DIR = path.join(
|
|
BACKUP_DIR_BACKUP,
|
|
`docker`,
|
|
`volumes`,
|
|
);
|
|
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,
|
|
});
|