Advertisement
Guest User

Backup.js

a guest
Mar 20th, 2025
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. import { $ } from 'zx'
  2. import path from "path"
  3. import fs from "fs"
  4.  
  5. const backup_folder = "/vol/data/backup"
  6. const discord_webhook = "https://discordapp.com/api/webhooks/xxxxxx"
  7.  
  8. process.env.BORG_PASSPHRASE = `xxxxxx`
  9.  
  10. let now = new Date()
  11. let today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}-${now.getHours()}:${now.getMinutes()}`
  12.  
  13. console.log(today)
  14.  
  15. if (fs.existsSync(path.join(import.meta.dirname, "temp_git"))) {
  16. console.log("Delete temp_git Folder")
  17. fs.rmdirSync(path.join(import.meta.dirname, "temp_git"), {recursive: true });
  18. }
  19.  
  20. console.log("Create temp_git folder")
  21. fs.mkdirSync(path.join(import.meta.dirname, "temp_git"))
  22.  
  23. console.log("")
  24. console.log("=== Backing Up Postgres ===")
  25. const sql_file = path.join(import.meta.dirname, `temp_git/dump_${today}.sql`)
  26. const postgres = await $`docker exec -t forgejo_db_1 pg_dumpall -c -U gitea > ${sql_file}`
  27. console.log("Dump OK")
  28.  
  29. console.log("=== Add to Borg Backup ===")
  30. console.log("Folder: ", backup_folder)
  31.  
  32. console.log("> Start backup")
  33. const borg = await $`borg create --stats ${backup_folder}::${today} ${sql_file} /vol/data/git`
  34. console.log("> Backup finished")
  35. console.log("> Start prune")
  36. const borg_prune = await $`borg prune ${backup_folder} --stats --list -d 7 -w 4 -m 6`
  37. console.log("> Prune finished")
  38.  
  39. console.log("=== Upload Save ===")
  40. const rclone = await $`rclone sync ${backup_folder} swiss-backup:/git`
  41.  
  42. console.log("=== WebHook ===")
  43. await fetch(discord_webhook, {
  44. headers: {
  45. 'Content-Type': 'application/json'
  46. },
  47. method: "POST",
  48. body: JSON.stringify({
  49. "username": "Backup",
  50. "avatar_url": undefined,
  51. "content": "<@xxx>",
  52. "embeds": [{
  53. title: "Backup of Git Stack finished with success",
  54. type: "rich",
  55. description: "",
  56. color: 0x2ecc71
  57. }]
  58. })
  59. })%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement