commit a67242b4c089fab86627b1634d1c9aa1672dd44a Author: Zsolt Tasnadi Date: Sat Mar 7 00:34:49 2026 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bafd616 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.envrc +repositories +!repositories/.keep +database/*.sql diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..0a0a27e --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ + +db_redmine: + echo "==> Dump Redmine database" + cd /srv/stacks/redmine && docker compose exec database sh /db_backup/mariadb_backup.sh + +db_wiki: + echo "==> Dump Wiki database" + cd /srv/stacks/wiki && docker compose exec wiki_db sh /db_backup/pg_backup.sh + +db_catalog: + echo "==> Dump Catalog database" + cd /srv/stacks/teletype-games && docker compose exec mysql sh /db_backup/mysql_backup.sh + +repos: + echo "==> Get GIT repositories" + @BASE="/srv/backup/repositories/"; \ + SRC="https://git.teletype.hu"; \ + @TOKEN=$$GITEA_TOKEN; \ + mkdir -p $$BASE; \ + curl -s -H "Authorization: token $$TOKEN" "$$SRC/api/v1/repos/search?limit=10000&private=true" \ + | jq -r '.data[] | "\(.clone_url) \(.full_name)"' \ + | while read repo fullname; do \ + repo=$$(echo $$repo | sed 's|^http://|https://|'); \ + name=$$(basename $$fullname); \ + dir="$$BASE/$$name"; \ + echo "===> Get $$repo name=$$name"; \ + if [ -d "$$dir/.git" ]; then \ + git -C "$$dir" fetch --all --prune; \ + git -C "$$dir" pull; \ + else \ + git clone "$$repo" "$$dir"; \ + fi; \ + done + +backup: db_redmine db_wiki db_catalog repos diff --git a/database/mariadb_backup.sh b/database/mariadb_backup.sh new file mode 100755 index 0000000..17e0557 --- /dev/null +++ b/database/mariadb_backup.sh @@ -0,0 +1 @@ +mariadb-dump -u $MARIADB_USER -p$MARIADB_PASSWORD $MARIADB_DATABASE >"/db_backup/$MARIADB_DATABASE-$(date '+%Y-%m-%d-%H-%M').sql" diff --git a/database/mysql_backup.sh b/database/mysql_backup.sh new file mode 100755 index 0000000..c4e6169 --- /dev/null +++ b/database/mysql_backup.sh @@ -0,0 +1 @@ +mysqldump -u root -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE >"/db_backup/$MYSQL_DATABASE-$(date '+%Y-%m-%d-%H-%M').sql" diff --git a/database/pg_backup.sh b/database/pg_backup.sh new file mode 100755 index 0000000..c471b78 --- /dev/null +++ b/database/pg_backup.sh @@ -0,0 +1 @@ +pg_dump -U $POSTGRES_USER $POSTGRES_DB >"/db_backup/${POSTGRES_DB}-$(date '+%Y-%m-%d-%H-%M').sql"