refactor & add env-or-file
This commit is contained in:
parent
8f69d2c1d6
commit
9d45731246
6 changed files with 32 additions and 17 deletions
|
@ -4,4 +4,4 @@ FROM c4k-forgejo-backup:latest
|
||||||
RUN apt update && apt install -qqy openjdk-17-jre-headless
|
RUN apt update && apt install -qqy openjdk-17-jre-headless
|
||||||
ADD local/ /usr/local/lib/dda-backup
|
ADD local/ /usr/local/lib/dda-backup
|
||||||
ADD resources /tmp/
|
ADD resources /tmp/
|
||||||
RUN /tmp/test.bb
|
RUN ENV_PASSWORD=env-password /tmp/test.bb
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/env bb
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
(require '[babashka.tasks :as tasks]
|
(require '[babashka.tasks :as tasks]
|
||||||
|
'[dda.backup.core :as bc]
|
||||||
'[dda.backup.restic :as rc]
|
'[dda.backup.restic :as rc]
|
||||||
'[dda.backup.postgresql :as pg]
|
'[dda.backup.postgresql :as pg]
|
||||||
'[dda.backup.backup :as bak]
|
'[dda.backup.backup :as bak]
|
||||||
|
@ -11,7 +12,7 @@
|
||||||
|
|
||||||
(def file-config (merge restic-repo {:backup-path "files"
|
(def file-config (merge restic-repo {:backup-path "files"
|
||||||
:files ["test-backup"]
|
:files ["test-backup"]
|
||||||
:target-directory "test-restore"}))
|
:restore-target-directory "test-restore"}))
|
||||||
|
|
||||||
|
|
||||||
(def db-config (merge restic-repo {:backup-path "db"
|
(def db-config (merge restic-repo {:backup-path "db"
|
||||||
|
@ -23,24 +24,27 @@
|
||||||
|
|
||||||
(defn prepare!
|
(defn prepare!
|
||||||
[]
|
[]
|
||||||
|
(spit "file_password" "file-password")
|
||||||
|
(println (bc/env-or-file "file_password"))
|
||||||
|
(println (bc/env-or-file "env_password"))
|
||||||
|
(spit "restic-pwd" "ThePassword")
|
||||||
|
(tasks/shell "mkdir" "-p" "test-backup")
|
||||||
|
(spit "test-backup/file" "I was here")
|
||||||
|
(tasks/shell "mkdir" "-p" "test-restore")
|
||||||
(pg/create-pg-pass! db-config))
|
(pg/create-pg-pass! db-config))
|
||||||
|
|
||||||
(defn restic-repo-init!
|
(defn restic-repo-init!
|
||||||
[]
|
[]
|
||||||
(spit "restic-pwd" "ThePassword")
|
|
||||||
(rc/init! file-config)
|
(rc/init! file-config)
|
||||||
(rc/init! (merge db-config dry-run)))
|
(rc/init! (merge db-config dry-run)))
|
||||||
|
|
||||||
(defn restic-backup!
|
(defn restic-backup!
|
||||||
[]
|
[]
|
||||||
(tasks/shell "mkdir" "-p" "test-backup")
|
|
||||||
(spit "test-backup/file" "I was here")
|
|
||||||
(bak/backup-file! file-config)
|
(bak/backup-file! file-config)
|
||||||
(bak/backup-db! (merge db-config dry-run)))
|
(bak/backup-db! (merge db-config dry-run)))
|
||||||
|
|
||||||
(defn restic-restore!
|
(defn restic-restore!
|
||||||
[]
|
[]
|
||||||
(tasks/shell "mkdir" "-p" "test-restore")
|
|
||||||
(rs/restore-file! file-config)
|
(rs/restore-file! file-config)
|
||||||
(pg/drop-create-db! (merge db-config dry-run))
|
(pg/drop-create-db! (merge db-config dry-run))
|
||||||
(rs/restore-db! (merge db-config dry-run)))
|
(rs/restore-db! (merge db-config dry-run)))
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
(ns dda.backup.core
|
(ns dda.backup.core
|
||||||
(:require
|
(:require
|
||||||
[clojure.spec.alpha :as s]))
|
[orchestra.core :refer [defn-spec]]
|
||||||
|
[clojure.spec.alpha :as s]
|
||||||
|
[clojure.string :as st]))
|
||||||
|
|
||||||
(def default {:dry-run false
|
(def default {:dry-run false
|
||||||
:debug false})
|
:debug false})
|
||||||
|
@ -10,3 +12,12 @@
|
||||||
:opt-un [::dry-run
|
:opt-un [::dry-run
|
||||||
::debug
|
::debug
|
||||||
::execution-directory]))
|
::execution-directory]))
|
||||||
|
|
||||||
|
(defn-spec env-or-file string?
|
||||||
|
[name string?]
|
||||||
|
(let [name-upper (st/upper-case name)
|
||||||
|
name-lower (st/lower-case name)
|
||||||
|
from-env (System/getenv name-upper)]
|
||||||
|
(if (some? from-env)
|
||||||
|
from-env
|
||||||
|
(slurp name-lower))))
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
(s/def ::restore-file-config
|
(s/def ::restore-file-config
|
||||||
(s/merge ::restic/restic-config
|
(s/merge ::restic/restic-config
|
||||||
(s/keys :req-un [::domain/target-directory]
|
(s/keys :req-un [::domain/restore-target-directory]
|
||||||
:opt-un [::domain/snapshot-id])))
|
:opt-un [::domain/snapshot-id])))
|
||||||
|
|
||||||
(s/def ::restore-db-config
|
(s/def ::restore-db-config
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
[dda.backup.restic.domain :as rd]
|
[dda.backup.restic.domain :as rd]
|
||||||
[dda.backup.postgresql.domain :as pd]))
|
[dda.backup.postgresql.domain :as pd]))
|
||||||
|
|
||||||
(s/def ::target-directory string?)
|
(s/def ::restore-target-directory string?)
|
||||||
(s/def ::snapshot-id string?)
|
(s/def ::snapshot-id string?)
|
||||||
|
|
||||||
(s/def ::restore-file-config
|
(s/def ::restore-file-config
|
||||||
(s/merge ::rd/restic-config
|
(s/merge ::rd/restic-config
|
||||||
(s/keys :req-un [::target-directory
|
(s/keys :req-un [::restore-target-directory
|
||||||
::snapshot-id])))
|
::snapshot-id])))
|
||||||
|
|
||||||
(s/def ::restore-db-config
|
(s/def ::restore-db-config
|
||||||
|
@ -22,9 +22,9 @@
|
||||||
|
|
||||||
(defn-spec restore-dir-command ::cd/commands
|
(defn-spec restore-dir-command ::cd/commands
|
||||||
[config ::restore-file-config]
|
[config ::restore-file-config]
|
||||||
(let [{:keys [target-directory snapshot-id]} config]
|
(let [{:keys [restore-target-directory snapshot-id]} config]
|
||||||
[["rm" "-rf" target-directory]
|
[["rm" "-rf" restore-target-directory]
|
||||||
(rd/repo-command config ["restore" snapshot-id "--target" target-directory])]))
|
(rd/repo-command config ["restore" snapshot-id "--target" restore-target-directory])]))
|
||||||
|
|
||||||
(defn-spec restore-db-command ::cd/commands
|
(defn-spec restore-db-command ::cd/commands
|
||||||
[config ::restore-db-config]
|
[config ::restore-db-config]
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"dir-to-backup"]]
|
"dir-to-backup"]]
|
||||||
(cut/restore-dir-command {:restic-repository "repo"
|
(cut/restore-dir-command {:restic-repository "repo"
|
||||||
:backup-path "dir-at-repo"
|
:backup-path "dir-at-repo"
|
||||||
:target-directory "dir-to-backup"
|
:restore-target-directory "dir-to-backup"
|
||||||
:days-to-keep 39
|
:days-to-keep 39
|
||||||
:months-to-keep 3
|
:months-to-keep 3
|
||||||
:snapshot-id "latest"}))))
|
:snapshot-id "latest"}))))
|
||||||
|
|
Loading…
Reference in a new issue